<!DOCTYPE html>



  


<html class="theme-next pisces use-motion" lang="zh-Hans">
<head>

  <meta charset="UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>
<meta name="theme-color" content="#222">






  
  
    
      
    
    
      
    
  <script async src="//cdn.jsdelivr.net/npm/pace-js@1.0.2/pace.min.js"></script>
  <link href="//cdn.jsdelivr.net/npm/pace-js@1.0.2/themes/blue/pace-theme-minimal.css" rel="stylesheet">








<meta http-equiv="Cache-Control" content="no-transform" />
<meta http-equiv="Cache-Control" content="no-siteapp" />


















  
  
  <link href="/blog/lib/fancybox/source/jquery.fancybox.css?v=2.1.5" rel="stylesheet" type="text/css" />


<link href="https://fonts.loli.net/css?family=EB+Garamond:400,400i,700,700i|Noto+Serif+SC:400,500,700&display=swap&subset=chinese-simplified" rel="stylesheet">




  

<link href="//cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css" />

<link href="/blog/css/main.css?v=5.1.4" rel="stylesheet" type="text/css" />


  <link rel="apple-touch-icon" sizes="180x180" href="/blog/images/apple-touch-icon-next.png?v=5.1.4">


  <link rel="icon" type="image/png" sizes="32x32" href="/blog/images/favicon-32x32-next.png?v=5.1.4">


  <link rel="icon" type="image/png" sizes="16x16" href="/blog/images/favicon-16x16-next.png?v=5.1.4">


  <link rel="mask-icon" href="/blog/images/logo.svg?v=5.1.4" color="#222">





  <meta name="keywords" content="Android,开源框架," />





  <link rel="alternate" href="/blog/atom.xml" title="叶金诚的站点" type="application/atom+xml" />






<meta name="description" content="说明：无聊之时作的一篇笔记式文章， 精力有限，很多错误之处，受时间与能力限制，没能及时修改，隐隐懊悔，受读者启发，遂将此文公之于众，旨在号召大家共同编辑、共同参与，让此排行榜帮助更多的Android开发者。 读者参与方式：1.在博客原文站点进行评论，提出对文章内容的修改意见，请务必描述准确。2.使用Github的Pull requests，clone本地-&gt;重新编辑-&gt;提交。请务必核">
<meta property="og:type" content="article">
<meta property="og:title" content="Android 百大框架排行榜">
<meta property="og:url" content="http://idolcoder.gitee.io/blog/2016/04/Android-TOP-100-Program/index.html">
<meta property="og:site_name" content="叶金诚的站点">
<meta property="og:description" content="说明：无聊之时作的一篇笔记式文章， 精力有限，很多错误之处，受时间与能力限制，没能及时修改，隐隐懊悔，受读者启发，遂将此文公之于众，旨在号召大家共同编辑、共同参与，让此排行榜帮助更多的Android开发者。 读者参与方式：1.在博客原文站点进行评论，提出对文章内容的修改意见，请务必描述准确。2.使用Github的Pull requests，clone本地-&gt;重新编辑-&gt;提交。请务必核">
<meta property="og:locale">
<meta property="og:image" content="http://images2015.cnblogs.com/blog/1149134/201706/1149134-20170616104729165-546624366.png">
<meta property="article:published_time" content="2016-04-10T03:50:49.000Z">
<meta property="article:modified_time" content="2021-02-27T05:35:40.760Z">
<meta property="article:author" content="叶金诚">
<meta property="article:tag" content="Android">
<meta property="article:tag" content="开源框架">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="http://images2015.cnblogs.com/blog/1149134/201706/1149134-20170616104729165-546624366.png">



<script type="text/javascript" id="hexo.configurations">
  var NexT = window.NexT || {};
  var CONFIG = {
    root: '',
    scheme: 'Pisces',
    version: '5.1.4',
    sidebar: {"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":true,"onmobile":true},
    fancybox: true,
    tabs: true,
    motion: {"enable":true,"async":true,"transition":{"post_block":"flipBounceYIn","post_header":"perspectiveRightIn","post_body":"fadeIn","coll_header":"swoopIn","sidebar":"shrinkIn"}},
    duoshuo: {
      userId: '0',
      author: '博主'
    },
    algolia: {
      applicationID: '',
      apiKey: '',
      indexName: '',
      hits: {"per_page":10},
      labels: {"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}
    }
  };
</script>



  <link rel="canonical" href="http://idolcoder.gitee.io/blog/2016/04/Android-TOP-100-Program/"/>





<!-- 设置文章需要密码访问 -->
<script>
    (function(){
        if(''){
            if (prompt('请输入文章密码') !== ''){
                alert('密码错误！');
                history.back();
            }
        }
    })();
</script>

  <title>Android 百大框架排行榜 | 叶金诚的站点</title>
  









  

  
	<!-- leafacePlayer -->
	
      <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
      <meta name="baidu-site-verification" content="code-lde50FghqK" />

	

</head>

<body itemscope itemtype="http://schema.org/WebPage" lang="zh-Hans">

  

  
  
    
  

  <div class="container sidebar-position-left page-post-detail">
    <div class="headband"></div>

    <!--fork me from github-->
    <a target="_blank" rel="noopener" href="https://github.com/ShaunSheep" class="github-corner" aria-label="View source on GitHub"><svg width="80" height="80" viewBox="0 0 250 250" style="fill:#64CEAA; color:#fff; position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>

    <header id="header" class="header" itemscope itemtype="http://schema.org/WPHeader">
      <div class="header-inner"><div class="site-brand-wrapper">
  <div class="site-meta ">
    

    <div class="custom-logo-site-title">
      <a href="/blog/"  class="brand" rel="start">
        <span class="logo-line-before"><i></i></span>
        <span class="site-title">叶金诚的站点</span>
        <span class="logo-line-after"><i></i></span>
      </a>
    </div>
      
        <h1 class="site-subtitle" itemprop="description">汇贤雅叙</h1>
      
  </div>

  <div class="site-nav-toggle">
    <button>
      <span class="btn-bar"></span>
      <span class="btn-bar"></span>
      <span class="btn-bar"></span>
    </button>
  </div>
</div>

<nav class="site-nav">
  

  
    <ul id="menu" class="menu">
      
        
        <li class="menu-item menu-item-home">
          <a href="/blog/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-home"></i> <br />
            
            首页
          </a>
        </li>
      
        
        <li class="menu-item menu-item-categories">
          <a href="/blog/categories/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-th"></i> <br />
            
            分类
          </a>
        </li>
      
        
        <li class="menu-item menu-item-movies">
          <a href="/blog/movies/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-film"></i> <br />
            
            电影
          </a>
        </li>
      
        
        <li class="menu-item menu-item-图书">
          <a href="/blog/books/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-calendar"></i> <br />
            
            图书
          </a>
        </li>
      
        
        <li class="menu-item menu-item-archives">
          <a href="/blog/archives/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-question-circle"></i> <br />
            
            归档
          </a>
        </li>
      
        
        <li class="menu-item menu-item-links">
          <a href="/blog/links/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-link"></i> <br />
            
            友链
          </a>
        </li>
      
        
        <li class="menu-item menu-item-about">
          <a href="/blog/about/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-user"></i> <br />
            
            关于
          </a>
        </li>
      

      
        <li class="menu-item menu-item-search">
          
            <a href="javascript:;" class="popup-trigger">
          
            
              <i class="menu-item-icon fa fa-search fa-fw"></i> <br />
            
            搜索
          </a>
        </li>
      
    </ul>
  

  
    <div class="site-search">
      
  <div class="popup search-popup local-search-popup">
  <div class="local-search-header clearfix">
    <span class="search-icon">
      <i class="fa fa-search"></i>
    </span>
    <span class="popup-btn-close">
      <i class="fa fa-times-circle"></i>
    </span>
    <div class="local-search-input-wrapper">
      <input autocomplete="off"
             placeholder="搜索..." spellcheck="false"
             type="text" id="local-search-input">
    </div>
  </div>
  <div id="local-search-result"></div>
</div>



    </div>
  
</nav>


 </div>
    </header>

    <main id="main" class="main">
      <div class="main-inner">
        <div class="content-wrap">
          <div id="content" class="content">
            

  <div id="posts" class="posts-expand">
    

  

  
  
  

  <article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
  
  
  
  <div class="post-block">
    <link itemprop="mainEntityOfPage" href="http://idolcoder.gitee.io/blog/blog/2016/04/Android-TOP-100-Program/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="name" content="">
      <meta itemprop="description" content="">
      <meta itemprop="image" content="/blog/images/head.png">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="叶金诚的站点">
    </span>

    
      <header class="post-header">

        
        
          <h2 class="post-title" itemprop="name headline">Android 百大框架排行榜</h2>
        

        <div class="post-meta">
          <span class="post-time">

             

             

            
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              
                <span class="post-meta-item-text">发表于</span>
              
              <time title="创建于" itemprop="dateCreated datePublished" datetime="2016-04-10T11:50:49+08:00">
                2016-04-10
              </time>
            

            

            
          </span>

          
            <span class="post-category" >
            
              <span class="post-meta-divider">|</span>
            
              <span class="post-meta-item-icon">
                <i class="fa fa-folder-o"></i>
              </span>
              
                <span class="post-meta-item-text">分类于</span>
              
              
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/blog/categories/Android/" itemprop="url" rel="index">
                    <span itemprop="name">Android</span>
                  </a>
                </span>

                
                
                  ， 
                
              
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/blog/categories/Android/%E9%A1%B9%E7%9B%AE%E6%9E%B6%E6%9E%84/" itemprop="url" rel="index">
                    <span itemprop="name">项目架构</span>
                  </a>
                </span>

                
                
                  ， 
                
              
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/blog/categories/Android/%E5%BC%80%E6%BA%90%E6%A1%86%E6%9E%B6/" itemprop="url" rel="index">
                    <span itemprop="name">开源框架</span>
                  </a>
                </span>

                
                
              
            </span>
          

          
            
          

          
          
             <span id="/blog/2016/04/Android-TOP-100-Program/" class="leancloud_visitors" data-flag-title="Android 百大框架排行榜">
               <span class="post-meta-divider">|</span>
               <span class="post-meta-item-icon">
                 <i class="fa fa-eye"></i>
               </span>
               
                 <span class="post-meta-item-text">浏览&#58;</span>
               
                 <span class="leancloud-visitors-count"></span>
             </span>
          

          <!--
          
          -->

          
            <span class="post-wordcount">
              
                
                  <span class="post-meta-divider">|</span>
                
                <span class="post-meta-item-icon">
                  <i class="fa fa-file-word-o"></i>
                </span>
                
                  <span class="post-meta-item-text">字数&#58;</span>
                
                <span title="字数">
                  20k
                </span>
              

              
                <span class="post-meta-divider">|</span>
              

              
                <span class="post-meta-item-icon">
                  <i class="fa fa-clock-o"></i>
                </span>
                
                  <span class="post-meta-item-text">时长 &asymp;</span>
                
                <span title="时长">
                  81 分钟
                </span>
              
            </span>
          

          <!-- 隐藏文章内标题下，内容描述
          
          -->

        </div>
      </header>
    

    
    
    
    <div class="post-body" itemprop="articleBody">

      
      

      
        <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><blockquote>
<p>说明：无聊之时作的一篇笔记式文章，</p>
<p>精力有限，很多错误之处，受时间与能力限制，没能及时修改，隐隐懊悔，<br>受读者启发，遂将此文公之于众，旨在号召大家共同编辑、共同参与，让此排行榜帮助更多的Android开发者。</p>
<p>读者参与方式：<br>1.在博客原文站点进行评论，提出对文章内容的修改意见，请务必描述准确。<br>2.使用Github的Pull requests，clone本地-&gt;重新编辑-&gt;提交。请务必核查准确。<br>3.提Issues，我每周末会统一解决Issues（这种会影响关注者的时间线，最末推荐）。</p>
<div id="cnblogs_post_body">

<p><a target="_blank" rel="noopener" href="https://github.com/ShaunSheep/Android_100_TOP-Projects">文本文Gihutb项目地址</a></p>
</div></blockquote>
<h1 id="框架提供一定能力的小段程序"><a href="#框架：提供一定能力的小段程序" class="headerlink" title=" 框架：提供一定能力的小段程序"></a><span style="font-family: 宋体; background-color: #ff9900"> 框架：提供一定能力的小段程序</span><a href="#框架提供一定能力的小段程序" class="header-anchor">#</a></h1><h1 id="一榜单介绍"><a href="#一-榜单介绍" class="headerlink" title="一.榜单介绍"></a>一.榜单介绍<a href="#一榜单介绍" class="header-anchor">#</a></h1><p><span style="font-size: 15px">排行榜包括四大类：</span></p>
<p><span style="font-size: 15px">单一框架：仅提供路由、网络层、UI层、通信层或其他<strong>单一功能</strong>的框架</span></p>
<p><span style="font-size: 15px">混合开发框架：提供开发<strong>hybrid app、h5与webview结合能力、web app能力</strong>的框架</span></p>
<p><span style="font-size: 15px">企业级开源项目：可以独立运行的app，有极高的学习价值、思路借鉴意义</span></p>
<p><span style="font-size: 15px">书籍类开源项目：类似Open-sourc-project这样的导航类项目；大型公司的Android课程的学习目录 tips</span></p>
<p><span style="font-size: 16px; font-family: 宋体">榜单排序依据：</span></p>
<p><span style="font-size: 15px">1.项目开源</span></p>
<p><span style="font-size: 15px">2.github上该项目的star个数</span></p>
<p><span style="font-size: 15px">3.开发团队、作者的实力</span></p>
<p>为了保证榜单内容的多样性，榜单上尽可能的不重复同类型框架（比如多款listview增强框架）</p>
<p><span style="font-family: 黑体; font-size: 18px">适用读者范围：</span></p>
<ul>
<li>  <span style="font-size: 16px">正在入门Android的新手~~~Android初级开发工程师  初出茅庐</span></li>
</ul>
<p>　<span style="font-size: 15px">　<strong>熟读</strong>《书籍导航类项目排行榜》，勤加练习进步会更大；<strong>编译运行并动脑思考</strong>《企业级开源项目》中的案例，可以提升开发完整项目的能力；;<strong>略读</strong>《框架百大排行榜》，最大的作用是的是拓展视野，可以看到很多时下流行的名词概念术语</span></p>
<ul>
<li>  <span style="font-size: 16px">Android初级开发工程师~~~中级开发工程师    知其然知其所以然</span></li>
</ul>
<p>　<span style="font-size: 15px">　熟练、快速、高效的默写出《企业级开源项目》中的（自己感兴趣）典型案例，对提高书写代码的自信，提升项目功能整体设计能力；深究《框架百大排行榜》排名靠前框架的<strong>原理</strong>，会让自己在与家人、同事、同学聚会之时多了一些炫耀的资本；如果你能熟练运用《框架百大排行榜》里所提到的框架，在遇到某种需求的时候，立刻会拿出<strong>“最优秀的框架”</strong>去解决，意味着你离中级工程师不太远了</span></p>
<ul>
<li>  <span style="font-size: 16px">中级、高级、资深工程师   知其然知其不可然</span></li>
</ul>
<p><span style="font-size: 15px">　　　《框架百大排行榜》里所提到的流行词、流行术语——使用能力、融会贯通其原理、讲解框架能力的高低，将让你不断的在这三个级别徘徊；</span></p>
<p><span style="font-size: 15px">　　　会有意识的合并榜单里多款同类型框架，来弥补单一框架的某些缺陷，比如将同为网络请求框架的Volley和Okhttp封装到一起应对不同场面的需求；</span></p>
<p><span style="font-size: 15px">　　　会有意识的二次开发、修改源码来扩展榜单所提到的大型框架；</span></p>
<p><span style="font-size: 15px">　　　能够在开发团队里推动、部署某些框架的能力——比如要在一个新加入的陌生团队说服leader和项目成员使用热更新、插件化、组件化、hybrid 开发等多种开发模式，你是否有这个实力?</span></p>
<p><span style="font-size: 15px">　　</span></p>
<p> <span style="font-size: 16px">框架名次越靠前，值得使用的优先级就越高、研究原理得到的收获会更多、对读者启发的价值就越大</span></p>
<h1 id="二百大框架排行榜"><a href="#二-百大框架排行榜" class="headerlink" title="二.百大框架排行榜"></a>二.百大框架排行榜<a href="#二百大框架排行榜" class="header-anchor">#</a></h1><p>快速索引</p>
<table>
<thead>
<tr>
<th>框架名称</th>
<th>上榜关键字</th>
</tr>
</thead>
<tbody><tr>
<td>1.Retrofit</td>
<td>网络</td>
</tr>
<tr>
<td>2.okhttp</td>
<td>网络</td>
</tr>
<tr>
<td>3.Butter Knife</td>
<td>代码模板</td>
</tr>
<tr>
<td>4.MPAndroidChart</td>
<td>图表</td>
</tr>
<tr>
<td>5.Glide</td>
<td>图片</td>
</tr>
<tr>
<td>6.leakcanary</td>
<td>内存</td>
</tr>
<tr>
<td>7.Android-Universal-Image-Loader</td>
<td>图片</td>
</tr>
<tr>
<td>8.EventBus</td>
<td>事件消息</td>
</tr>
<tr>
<td>9.zxing</td>
<td>条码扫描</td>
</tr>
<tr>
<td>10.picasso</td>
<td>图片</td>
</tr>
<tr>
<td>11.lottie-android</td>
<td>动画</td>
</tr>
<tr>
<td>12.fresco</td>
<td>图片</td>
</tr>
<tr>
<td>13.RxAndroid</td>
<td>异步</td>
</tr>
<tr>
<td>14.SlidingMenu</td>
<td>菜单</td>
</tr>
<tr>
<td>15.PhotoView</td>
<td>图片</td>
</tr>
<tr>
<td>16.material-dialogs</td>
<td>UI</td>
</tr>
<tr>
<td>17.android-async-http</td>
<td>网络</td>
</tr>
<tr>
<td>18.androidannotations</td>
<td>注解</td>
</tr>
<tr>
<td>19.fastjson</td>
<td>json</td>
</tr>
<tr>
<td>20.Material-Animations</td>
<td>动画</td>
</tr>
<tr>
<td>21.tinker</td>
<td>热修复</td>
</tr>
<tr>
<td>22.ViewPagerIndicator</td>
<td>UI</td>
</tr>
<tr>
<td>23.Android-CleanArchitecture</td>
<td>架构</td>
</tr>
<tr>
<td>24.Android-PullToRefresh</td>
<td>刷新</td>
</tr>
<tr>
<td>25.flexbox-layout</td>
<td>UI</td>
</tr>
<tr>
<td>26.AndroidSwipeLayout</td>
<td>UI</td>
</tr>
<tr>
<td>27.realm-java</td>
<td>数据库</td>
</tr>
<tr>
<td>28.greenDAO</td>
<td>数据</td>
</tr>
<tr>
<td>29.stetho</td>
<td>调试</td>
</tr>
<tr>
<td>30.BaseRecyclerViewAdapterHelper</td>
<td>UI</td>
</tr>
<tr>
<td>31.AndroidViewAnimations</td>
<td>动画</td>
</tr>
<tr>
<td>32.MaterialDrawer</td>
<td>菜单</td>
</tr>
<tr>
<td>33.Android-ObservableScrollView</td>
<td>UI</td>
</tr>
<tr>
<td>34.CircleImageView</td>
<td>图片</td>
</tr>
<tr>
<td>35.logger</td>
<td>调试</td>
</tr>
<tr>
<td>32.MaterialDrawer</td>
<td>菜单</td>
</tr>
<tr>
<td>36.agera</td>
<td>异步</td>
</tr>
<tr>
<td>37.BottomBar</td>
<td>菜单</td>
</tr>
<tr>
<td>38.Calligraphy</td>
<td>字体</td>
</tr>
<tr>
<td>39.AndroidSlidingUpPanel</td>
<td>UI</td>
</tr>
<tr>
<td>40.AppIntro</td>
<td>UI</td>
</tr>
<tr>
<td>41.recyclerview-animators</td>
<td>动画</td>
</tr>
<tr>
<td>42.dagger</td>
<td>依赖注入</td>
</tr>
<tr>
<td>43.Android-Bootstrap</td>
<td>UI</td>
</tr>
<tr>
<td>44.RxBinding</td>
<td>响应式</td>
</tr>
<tr>
<td>45.ListViewAnimations</td>
<td>动画</td>
</tr>
<tr>
<td>46.UItimateRecyclerView</td>
<td>图片</td>
</tr>
<tr>
<td>47.uCrop</td>
<td>UI</td>
</tr>
<tr>
<td>48.RxJava-Android-Samples</td>
<td>用例</td>
</tr>
<tr>
<td>49.AndroidAutoLayout</td>
<td>适配</td>
</tr>
<tr>
<td>50.EffectiveAndroidUI</td>
<td>性能</td>
</tr>
<tr>
<td>51.Luban</td>
<td>图片</td>
</tr>
<tr>
<td>52.DroidPlugin</td>
<td>插件化</td>
</tr>
<tr>
<td>53.otto</td>
<td>响应式</td>
</tr>
<tr>
<td>54.u2020</td>
<td>用例</td>
</tr>
<tr>
<td>55.buck</td>
<td>构建</td>
</tr>
<tr>
<td>56.PermissionsDispatcher</td>
<td>权限</td>
</tr>
<tr>
<td>57.android-gif-drawable</td>
<td>GIF</td>
</tr>
<tr>
<td>58.Apktool</td>
<td>反编译</td>
</tr>
<tr>
<td>59.dynamic-load-apk</td>
<td>插件化</td>
</tr>
<tr>
<td>60.atlas</td>
<td>插件化</td>
</tr>
<tr>
<td>61.volley</td>
<td>网络</td>
</tr>
<tr>
<td>62.androidmvp</td>
<td>用例</td>
</tr>
<tr>
<td>63.SwipeBackLayout</td>
<td>手势</td>
</tr>
<tr>
<td>64.FlycoTabLayout</td>
<td>UI</td>
</tr>
<tr>
<td>65.android-testing</td>
<td>测试</td>
</tr>
<tr>
<td>66.FileDownloader</td>
<td>下载</td>
</tr>
<tr>
<td>67.JieCaoVideoPlayer</td>
<td>多媒体</td>
</tr>
<tr>
<td>68.glide-transformations</td>
<td>图片</td>
</tr>
<tr>
<td>69.android-gpuimage</td>
<td>图片</td>
</tr>
<tr>
<td>70.RxPermissions</td>
<td>权限</td>
</tr>
<tr>
<td>71.freeline</td>
<td>编译</td>
</tr>
<tr>
<td>72.RxLifecycle</td>
<td>生命周期</td>
</tr>
<tr>
<td>73.classyshark</td>
<td>反编译</td>
</tr>
<tr>
<td>74.acra</td>
<td>崩溃日志</td>
</tr>
<tr>
<td>75.DiskLruCache</td>
<td>文件</td>
</tr>
<tr>
<td>76.dexposed</td>
<td>热修复</td>
</tr>
<tr>
<td>77.Litho</td>
<td>性能</td>
</tr>
<tr>
<td>78.mosby</td>
<td>MVP</td>
</tr>
<tr>
<td>79.AndResGuard</td>
<td>混淆</td>
</tr>
<tr>
<td>80.StatusBarUtil</td>
<td>状态栏</td>
</tr>
<tr>
<td>81.robolectric</td>
<td>测试</td>
</tr>
<tr>
<td>82.Fragmentation</td>
<td>嵌套</td>
</tr>
<tr>
<td>83.Small</td>
<td>插件化</td>
</tr>
<tr>
<td>84.JsBridge</td>
<td>hybrid</td>
</tr>
<tr>
<td>85.richeditor-android</td>
<td>UI</td>
</tr>
<tr>
<td>86.Transitions-Everywhere</td>
<td>动画</td>
</tr>
<tr>
<td>87.android-viewbadger</td>
<td>勋章</td>
</tr>
<tr>
<td>88.AndroidWiFiADB</td>
<td>调试</td>
</tr>
<tr>
<td>89.emojicon</td>
<td>表情包</td>
</tr>
<tr>
<td>90.packer-ng-plugin</td>
<td>多渠道</td>
</tr>
<tr>
<td>91.android-priority-jobqueue</td>
<td>多线程</td>
</tr>
<tr>
<td>92.Android-Debug-Database</td>
<td>调试</td>
</tr>
<tr>
<td>93.conceal</td>
<td>加密</td>
</tr>
<tr>
<td>94.ARouter</td>
<td>页面路由</td>
</tr>
<tr>
<td>95.MagicaSakura</td>
<td>多主题</td>
</tr>
<tr>
<td>96.CustomActivityOnCrash</td>
<td>崩溃</td>
</tr>
<tr>
<td>97.XhsEmoticonsKeyboard</td>
<td>键盘</td>
</tr>
<tr>
<td>98.Android Debug Database</td>
<td>数据库调试</td>
</tr>
</tbody></table>
<h2 id="1-retrofit"><a href="#1-Retrofit" class="headerlink" title="1. Retrofit"></a>1. Retrofit<a href="#1-retrofit" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：Retrofit是一款类型安全的网络框架，基于HTTP协议，服务于Android和java语言</span></p>
<p><span style="font-size: 15px">上榜理由：Retrofit以21.8k的stars量雄踞github中android子标题榜首，第一当之无愧。</span></p>
<p><span style="font-size: 15px">官网地址 <a target="_blank" rel="noopener" href="http://square.github.io/retrofit/">http://square.github.io/retrofit/</a></span></p>
<p><span style="font-size: 15px">github  <a target="_blank"> https://github.com/square/retrofit</a></span></p>
<p><span style="font-size: 15px">作者：square团队</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre>compile <span style="color: #800000">'</span><span style="color: #800000">com.squareup.retrofit2:retrofit:2.3.0</span><span style="color: #800000">'</span></pre>

</div>

<h2 id="2okhttp"><a href="#2-okhttp" class="headerlink" title="2.okhttp"></a>2.okhttp<a href="#2okhttp" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：okhttp是一款基于HTTP和HTTP2.0协议的网络框架，服务于java和android客户端</span></p>
<p><span style="font-size: 15px">上榜理由，okhttp以20.4k的stars量雄踞github中android子标题第二名。大型公司比如淘宝也封装的是okhttp。Retrofit2.0开始内置okhttp框架，Retrofit专注封装接口完成业务需求，okhttp专注网络请求的安全高效，笔者将两者区分开，是想让后来学习者知道，这是两套框架，学习框架原理时可以分开学习，以免理解混乱。</span></p>
<p><span style="font-size: 15px">官网地址   <a target="_blank" rel="noopener" href="https://github.com/JakeWharton/butterknife">http://square.github.io/okhttp/</a></span></p>
<p><span style="font-size: 15px">github    <a target="_blank" rel="noopener" href="https://github.com/square/okhttp">https://github.com/square/okhttp</a></span></p>
<p><span style="font-size: 15px">作者：square团队</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre>compile <span style="color: #800000">'</span><span style="color: #800000">com.squareup.okhttp3:okhttp:3.8.0</span><span style="color: #800000">'</span></pre>

</div>

<h2 id="3butter-knife"><a href="#3-Butter-Knife" class="headerlink" title="3.Butter Knife"></a>3.Butter Knife<a href="#3butter-knife" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：Butter Knife所提供了一种能力——使用注解生成模板代码，将view与方法和参数绑定。</span></p>
<p><span style="font-size: 15px">上榜理由：github上16.5K个star，配合Androidstudio提供的Butter Knife插件，帮助开发者省却了频繁findviewbyid的烦恼，最新的Butter Knife还提供了onclick绑定以及字符串的初始化，初学者可以查阅Butter Knife以及Butter Knife插件进一步学习！</span></p>
<p><span style="font-size: 15px">官网地址：<a target="_blank" rel="noopener" href="http://jakewharton.github.io/butterknife/">http://jakewharton.github.io/butterknife/</a></span></p>
<p><span style="font-size: 15px">github：<a target="_blank" rel="noopener" href="https://github.com/JakeWharton/butterknife">https://github.com/JakeWharton/butterknife</a></span></p>
<p><span style="font-size: 15px">作者：JakeWharton ，也是square团队成员之一</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre><span style="color: #000000">dependencies {
  compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.jakewharton:butterknife:8.6.0</span><span style="color: #800000">'</span> <span style="color: #000000">annotationProcessor</span> <span style="color: #800000">'</span><span style="color: #800000">com.jakewharton:butterknife-compiler:8.6.0</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

</div>

<h2 id="4mpandroidchart"><a href="#4-MPAndroidChart" class="headerlink" title="4.MPAndroidChart"></a>4.MPAndroidChart<a href="#4mpandroidchart" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：MPAndroidChart是一款图表框架</span></p>
<p><span style="font-size: 15px">上榜理由：github上16.1K个star，以快速、简洁。强大著称的图表框架</span></p>
<p><span style="font-size: 15px">官网地址 <a target="_blank" rel="noopener" href="https://github.com/PhilJay/MPAndroidChart">https://github.com/PhilJay/MPAndroidChart</a>  </span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/PhilJay/MPAndroidChart">https://github.com/PhilJay/MPAndroidChart</a></span></p>
<p><span style="font-size: 15px">作者：PhilJay</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<p><span style="font-size: 15px">1. 在AS中加入Gradle依赖</span></p>
<ul>
<li><p>  <span style="font-size: 15px">在根目录的 <code>build.gradle上加入</code>:</span></p>
</li>
<li><div class="cnblogs_code">

  <pre><span style="color: #000000">allprojects {
      repositories {
          maven { url</span> <span style="color: #800000">"</span><span style="color: #800000">https://jitpack.io</span><span style="color: #800000">"</span> <span style="color: #000000">}
      }
  }</span></pre>

  </div>
</li>
<li><p><span style="font-size: 15px">在app的build.gradle上加入：</span></p>
</li>
<li><div class="cnblogs_code">

  <pre><span style="color: #000000">dependencies {
      compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.github.PhilJay:MPAndroidChart:v3.0.2</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

  </div>

</li>
</ul>
<h2 id="5-glide"><a href="#5-glide" class="headerlink" title="5. glide"></a>5. glide<a href="#5-glide" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：glide是一款专注于提供<strong>流畅划动能力</strong>的“图片加载和缓存框架”</span></p>
<p><span style="font-size: 15px">上榜理由：15.9k个star，图片加载类框架排名第一的框架，google 在2014开发者大会上演示的camera app就是基于gilde框架开发的</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/bumptech/glide">https://github.com/bumptech/glide</a></span></p>
<p><span style="font-size: 15px">作者 Bump Technologies团队</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre><span style="color: #000000">repositories {
  mavenCentral()
}

dependencies {
    compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.github.bumptech.glide:glide:3.8.0</span><span style="color: #800000">'</span> <span style="color: #000000">compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.android.support:support-v4:19.1.0</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<h2 id="6leakcanary"><a href="#6-leakcanary" class="headerlink" title="6.leakcanary"></a>6.leakcanary<a href="#6leakcanary" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款内存检测框架，服务于java和android客户端</span></p>
<p><span style="font-size: 15px">上榜理由：方便，简洁是leakcanary最大的特点，只需在应用的apllication中集成，就可以直接使用它；15.5k个star说明了它有多么受欢迎</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/square/leakcanary">https://github.com/square/leakcanary</a></span></p>
<p><span style="font-size: 15px">作者 square团队</span></p>
<p><span style="font-size: 15px">使用</span>：</p>
<div class="cnblogs_code">

<pre> <span style="color: #000000">dependencies {
   debugCompile</span> <span style="color: #800000">'</span><span style="color: #800000">com.squareup.leakcanary:leakcanary-android:1.5.1</span><span style="color: #800000">'</span> <span style="color: #000000">releaseCompile</span> <span style="color: #800000">'</span><span style="color: #800000">com.squareup.leakcanary:leakcanary-android-no-op:1.5.1</span><span style="color: #800000">'</span> <span style="color: #000000">testCompile</span> <span style="color: #800000">'</span><span style="color: #800000">com.squareup.leakcanary:leakcanary-android-no-op:1.5.1</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

</div>

<p><span style="font-size: 15px">在 <code>Application</code> 中写入:</span></p>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre><span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> <span style="color: #000000">ExampleApplication extends Application {

  @Override</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> <span style="color: #000000">onCreate() {
    super.onCreate();</span> <span style="color: #0000ff">if</span> (LeakCanary.isInAnalyzerProcess(<span style="color: #0000ff">this</span><span style="color: #000000">)) {</span> <span style="color: #008000">//</span> <span style="color: #008000">This process is dedicated to LeakCanary for heap analysis.</span> <span style="color: #008000">//</span> <span style="color: #008000">You should not init your app in this process.</span>
      <span style="color: #0000ff">return</span><span style="color: #000000">;
    }
    LeakCanary.install(</span><span style="color: #0000ff">this</span><span style="color: #000000">);</span> <span style="color: #008000">//</span> <span style="color: #008000">Normal app init code...</span>
 <span style="color: #000000">}
}</span></pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<h2 id="7android-universal-image-loader"><a href="#7-Android-Universal-Image-Loader" class="headerlink" title="7.Android-Universal-Image-Loader"></a>7.Android-Universal-Image-Loader<a href="#7android-universal-image-loader" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：曾经的图片加载框架王者，android开发老手都用过它</span></p>
<p><span style="font-size: 15px">上榜理由:android端图片加载框架的老大哥了，15.3k个star足以证明它的热门，UIL与gilde最大区别是可定制，UIL提供了大量配置方式，图片加载状态的回调（成功，失败，进行中），加载动画等；以及提供了移动端图片加载框架的缓存思路：三级缓存策略 sd卡-内存-网络；值得注意的是，UIL以及两年未更新了，但笔者仍推荐各位使用！</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/nostra13/Android-Universal-Image-Loader">https://github.com/nostra13/Android-Universal-Image-Loader</a></span></p>
<p><span style="font-size: 15px">作者 nostra13</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<p><span style="font-size: 15px">下载地址  <a target="_blank" rel="noopener" href="https://github.com/nostra13/Android-Universal-Image-Loader/raw/master/downloads/universal-image-loader-1.9.5.jar">universal-image-loader-1.9.5.jar</a></span></p>
<p><span style="font-size: 15px"> </span></p>
<h2 id="8eventbus"><a href="#8-EventBus" class="headerlink" title="8.EventBus"></a>8.EventBus<a href="#8eventbus" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：EventBus是一款本地组件间通信框架</span></p>
<p><span style="font-size: 15px">上榜理由：组件间通信框架star量第一：14.8k，在大型项目的Activities，fragments，Threads，Services都可以看到它的使用场景，尽管EventBus在向未创建的组件传递事件时有些局限，仅适合在“活着的”组件间传递消息，但仍不妨碍它活跃在各个大型项目各个场景里。</span></p>
<p><span style="font-size: 15px">官网地址 <a target="_blank" rel="noopener" href="http://greenrobot.org/eventbus/documentation/how-to-get-started/">http://greenrobot.org/eventbus/documentation/how-to-get-started/</a></span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/greenrobot/EventBus">https://github.com/greenrobot/EventBus</a></span></p>
<p><span style="font-size: 15px">作者 greenrobot </span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre>compile <span style="color: #800000">'</span><span style="color: #800000">org.greenrobot:eventbus:3.0.0</span><span style="color: #800000">'</span></pre>

</div>

<h2 id="9zxing"><a href="#9-zxing" class="headerlink" title="9.zxing"></a>9.zxing<a href="#9zxing" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：条码图像处理库</span></p>
<p><span style="font-size: 15px">上榜理由：如果你用过二维码，你肯定已经间接使用过大名鼎鼎的zxing了。13.9K的star量，让它排在本榜单第九，实至名归，如果你有了解二维码的需求，不妨从了解、修改它源码入手。</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/zxing/zxing"> https://github.com/zxing/zxing</a></span></p>
<p><span style="font-size: 15px">作者  Sean Owen</span></p>
<h2 id="10picasso"><a href="#10-picasso" class="headerlink" title="10.picasso"></a>10.picasso<a href="#10picasso" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：强力的图片下载、缓存框架</span></p>
<p><span style="font-size: 15px">上榜理由：本榜单出现的第三款图片类框架，不同的是picasso更强调图片下载，你可以将picasso集成进你的项目中，你也可以结合gilde和UIL与picasso，三者一齐封装至你的项目中，按需所用。</span></p>
<p><span style="font-size: 15px">官网地址 <a target="_blank" rel="noopener" href="http://square.github.io/picasso/">http://square.github.io/picasso/</a></span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/square/picasso">https://github.com/square/picasso</a></span></p>
<p><span style="font-size: 15px">作者 square团队</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre>compile <span style="color: #800000">'</span><span style="color: #800000">com.squareup.picasso:picasso:2.5.2</span><span style="color: #800000">'</span></pre>

</div>

<p><span style="font-size: 15px">或者下载</span></p>
<p><span style="font-size: 15px"><a target="_blank" rel="noopener" href="https://search.maven.org/remote_content?g=com.squareup.picasso&a=picasso&v=LATEST">jar包</a></span></p>
<h2 id="11lottie-android"><a href="#11-lottie-android" class="headerlink" title="11.lottie-android"></a>11.lottie-android<a href="#11lottie-android" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款可以在Android端快速展示Adobe Afeter Effect（AE）工具所作动画的框架</span></p>
<p><span style="font-size: 15px">上榜理由：动画类框架第一名，github上13.3k个star证明了他的优越性，利用json文件快速实现动画效果是它最大的便利，而这个json文件也是由Adobe提供的After Effects（AE）工具制作的，在AE中装一个Bodymovin的插件，使用这个插件最终将动画效果生成json文件，这个json文件即可由LottieAnimationView解析并生成绚丽的动画效果。而且它还支持跨平台哟。</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/airbnb/lottie-android">https://github.com/airbnb/lottie-android</a></span></p>
<p><span style="font-size: 15px">作者：Airbnb 团队</span></p>
<h2 id="12fresco"><a href="#12-fresco" class="headerlink" title="12.fresco"></a>12.fresco<a href="#12fresco" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款可以管理图片内存的框架</span></p>
<p><span style="font-size: 15px">上榜理由:github上12.8k个star，图片类排行榜第四名，facebook的出身证明了它并非是重复造的轮子，在管理图片内存领域上有着它的一片天地，渐进式加载、加载gif都是它与前三位相比独有的特性</span></p>
<p><span style="font-size: 15px">官网地址： <a target="_blank" rel="noopener" href="https://www.fresco-cn.org/">https://www.fresco-cn.org/</a></span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/facebook/fresco">https://github.com/facebook/fresco</a></span></p>
<p><span style="font-size: 15px">作者 facebook</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre><span style="color: #000000">dependencies {</span> <span style="color: #008000">//</span> <span style="color: #008000">其他依赖</span>
  compile <span style="color: #800000">'</span><span style="color: #800000">com.facebook.fresco:fresco:0.12.0</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

</div>

<p><span style="font-size: 15px">下面的依赖需要根据需求添加：</span></p>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre><span style="color: #000000">dependencies {</span> <span style="color: #008000">//</span> <span style="color: #008000">在 API < 14 上的机器支持 WebP 时，需要添加</span>
  compile <span style="color: #800000">'</span><span style="color: #800000">com.facebook.fresco:animated-base-support:0.12.0</span><span style="color: #800000">'</span>

  <span style="color: #008000">//</span> <span style="color: #008000">支持 GIF 动图，需要添加</span>
  compile <span style="color: #800000">'</span><span style="color: #800000">com.facebook.fresco:animated-gif:0.12.0</span><span style="color: #800000">'</span>

  <span style="color: #008000">//</span> <span style="color: #008000">支持 WebP （静态图+动图），需要添加</span>
  compile <span style="color: #800000">'</span><span style="color: #800000">com.facebook.fresco:animated-webp:0.12.0</span><span style="color: #800000">'</span> <span style="color: #000000">compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.facebook.fresco:webpsupport:0.12.0</span><span style="color: #800000">'</span>

  <span style="color: #008000">//</span> <span style="color: #008000">仅支持 WebP 静态图，需要添加</span>
  compile <span style="color: #800000">'</span><span style="color: #800000">com.facebook.fresco:webpsupport:0.12.0</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<h2 id="13rxandroid"><a href="#13-RxAndroid" class="headerlink" title="13.RxAndroid"></a>13.RxAndroid<a href="#13rxandroid" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款Android客户端组件间异步通信的框架</span></p>
<p><span style="font-size: 15px">上榜理由：github上12.7k个star，位居组件通信框架的第二名，仅在EventBus之后，如果要问两者的区别，Eventbus是用来取代组件间繁琐的interface，RxAndroid是用来取代AnsyTask的，并不冲突；当然RxAndroid的优点并不仅限于此，更多优雅的实现，可以去官网查阅！</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/ReactiveX/RxAndroid">https://github.com/ReactiveX/RxAndroid</a></span></p>
<p><span style="font-size: 15px">作者 JakeWharton</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre>compile <span style="color: #800000">'</span><span style="color: #800000">io.reactivex.rxjava2:rxandroid:2.0.1</span><span style="color: #800000">'</span>
compile <span style="color: #800000">'</span><span style="color: #800000">io.reactivex.rxjava2:rxjava:2.1.0</span><span style="color: #800000">'</span></pre>

</div>

<h2 id="14slidingmenu"><a href="#14-SlidingMenu" class="headerlink" title="14.SlidingMenu"></a>14.SlidingMenu<a href="#14slidingmenu" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：侧滑菜单栏框架</span></p>
<p><span style="font-size: 15px">上榜理由：与Userval-Image-loader 齐名的上古神器框架——为你的app提供侧滑菜单栏的功能；github闪更有10.5k个star，证明了它的经久不衰，即使在Google推出了NavigationDrawer，仍然没有减少开发者对SildingMenu的拥簇，经典总是经得起考验的，这个上古神兽已经四年没有更新了；有太多太多的app使用过它，这些都可以在软件的开源许可上看到！</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/jfeinstein10/SlidingMenu">https://github.com/jfeinstein10/SlidingMenu</a></span></p>
<p><span style="font-size: 15px">作者 Jeremy Feinstein</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<p><span style="font-size: 15px">在gihub上fork源码，集成进项目中</span></p>
<h2 id="15photoview"><a href="#15-PhotoView" class="headerlink" title="15.PhotoView"></a>15.PhotoView<a href="#15photoview" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款ImageView展示框架，支持缩放，响应手势</span></p>
<p><span style="font-size: 15px">上榜理由：10.3k的star数量，位于图片类框架排行榜第五位，PhotoView与前四位不同的是这次带来的是图片的展示能力，你一定好奇微信的头像点击放大是如何实现的，很多App的图片显示响应手势按压是如何实现的，了解PhotoView，你一定会开心的！（笔者也不会告诉你ImageView的点击放大效果在Android的sample也有）</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/chrisbanes/PhotoView">https://github.com/chrisbanes/PhotoView</a></span></p>
<p><span style="font-size: 15px">作者：chrisbanes</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre><span style="color: #000000">在app根目录的build.gradle中加入：
allprojects {
    repositories {
        maven { url</span> <span style="color: #800000">"</span><span style="color: #800000">https://jitpack.io</span><span style="color: #800000">"</span> <span style="color: #000000">}
    }
}
在app的module目录的build.gralde中加入：

dependencies {
    compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.github.chrisbanes:PhotoView:latest.release.here</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<p><span style="font-size: 15px">使用</span></p>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre><<span style="color: #000000">com.github.chrisbanes.photoview.PhotoView
    android:id</span>=<span style="color: #800000">"</span><span style="color: #800000">@+id/photo_view</span><span style="color: #800000">"</span> <span style="color: #000000">android:layout_width</span>=<span style="color: #800000">"</span><span style="color: #800000">match_parent</span><span style="color: #800000">"</span> <span style="color: #000000">android:layout_height</span>=<span style="color: #800000">"</span><span style="color: #800000">match_parent</span><span style="color: #800000">"</span>/>

 <span style="color: #000000">PhotoView photoView</span> = <span style="color: #000000">(PhotoView) findViewById(R.id.photo_view);
photoView.setImageResource(R.drawable.image);</span></pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<h2 id="16material-dialogs"><a href="#16-material-dialogs" class="headerlink" title="16.material-dialogs"></a>16.material-dialogs<a href="#16material-dialogs" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款自定义dialog框架</span></p>
<p><span style="font-size: 15px">上榜理由：9.9k个star，也是继PhotoView，SlidingMenu之后第三款自定义View框架，也许你还是自定义View的新人，对Dialog使用的还有点生疏，你可以通过它提升你的Dilaog使用能力</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/afollestad/material-dialogs">https://github.com/afollestad/material-dialogs</a></span></p>
<p><span style="font-size: 15px">作者：Aidan Follestad</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre><span style="color: #000000">dependencies {</span> <span style="color: #008000">//</span> <span style="color: #008000">... other dependencies here</span>
    compile <span style="color: #800000">'</span><span style="color: #800000">com.afollestad.material-dialogs:core:0.9.4.5</span><span style="color: #800000">'
}</span></pre>

</div>

<h2 id="17android-async-http"><a href="#17-Android-async-http" class="headerlink" title="17.Android-async-http"></a>17.Android-async-http<a href="#17android-async-http" class="header-anchor">#</a></h2><p><span style="font-size: 15px"> 一句话介绍：一款基于Http协议的异步请求的网络框架，</span></p>
<p><span style="font-size: 15px">上榜理由：虽然你有无数个使用retrofit+okhttp的理由，但9.8k个star，证明它仍然值得你深入学习。值得注意的是，它也已经有两年没更新了，你尽管拿去当你懒惰的理由！</span></p>
<p><span style="font-size: 15px">github   <a target="_blank" rel="noopener" href="https://github.com/loopj/android-async-http">https://github.com/loopj/android-async-http</a></span></p>
<p><span style="font-size: 15px">作者：James Smith</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre><span style="color: #000000">repositories {
  maven {
    url</span> <span style="color: #800000">'</span><span style="color: #800000">https://oss.sonatype.org/content/repositories/snapshots/</span><span style="color: #800000">'</span> <span style="color: #000000">}
}
dependencies {
  compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.loopj.android:android-async-http:1.5.0-SNAPSHOT</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<h2 id="18androidannotations"><a href="#18-androidannotations" class="headerlink" title="18.androidannotations"></a>18.androidannotations<a href="#18androidannotations" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款基于注解的快速开发框架</span></p>
<p><span style="font-size: 15px">上榜理由：与Butterknife一样基于注解，利用注解快速完成view的初始化，不同的是androidannotations提供了更多的能力：简单的线程模型等；笔者只接触过Butterknife，无法更进一步叙述androidannotations的优势，如果你志在深入了解注解的妙用，可以尝试探索一下！</span></p>
<p><span style="font-size: 15px">官网地址 <a target="_blank" rel="noopener" href="http://androidannotations.org/">http://androidannotations.org/</a></span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/androidannotations/androidannotations">https://github.com/androidannotations/androidannotations</a></span></p>
<p><span style="font-size: 15px">作者： WonderCsabo</span></p>
<h2 id="19fastjson"><a href="#19-fastjson" class="headerlink" title="19.fastjson"></a>19.fastjson<a href="#19fastjson" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍:一款基于json解析、生成的框架</span></p>
<p><span style="font-size: 15px">上榜理由：从它的名字不难看出，快速是它最大的特性，阿里巴巴的出身保证了代码的质量和优越，9.4k的star数量，也是榜单里第一个出现的中国开源框架，涉及网络的app都会用到json，fastjson值得作为你的首选！</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/alibaba/fastjson">https://github.com/alibaba/fastjson</a></span></p>
<p><span style="font-size: 15px">作者：alibaba</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre>compile <span style="color: #800000">'</span><span style="color: #800000">com.alibaba:fastjson:1.1.58.android</span><span style="color: #800000">'</span></pre>

</div>

<h2 id="20material-animations"><a href="#20-Material-Animations" class="headerlink" title="20.Material-Animations"></a>20.Material-Animations<a href="#20material-animations" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款提供场景转换过渡能力的动画框架</span></p>
<p><span style="font-size: 15px">上榜理由：Android动画框架排行榜第二名，9.3k个star数量，与动画框架榜单第一名lottie-android不同的是，Material-Animations提供的是场景切换的动画效果。Android 官网sample中已经提供了部分Transition （转场动画）的展示，作为初学者很难快速拓展到自己项目中，Material-Animations的示例出现为开发者省去了此类麻烦，直接照搬应用到自己的App中吧。</span></p>
<p><span style="font-size: 15px"> github  <a target="_blank" rel="noopener" href="https://github.com/lgvalle/Material-Animations">https://github.com/lgvalle/Material-Animations</a></span></p>
<p><span style="font-size: 15px">作者：Luis G. Valle</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<p><span style="font-size: 15px">down源码，修改学习</span></p>
<h2 id="21tinker"><a href="#21-tinker" class="headerlink" title="21.tinker"></a>21.tinker<a href="#21tinker" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：它是微信官网的Android热补丁解决方案</span></p>
<p><span style="font-size: 15px">上榜理由：9.1k个star，微信在用的热补丁方案，心动不如行动</span></p>
<p><span style="font-size: 15px">官网地址  <a target="_blank" rel="noopener" href="http://www.tinkerpatch.com/Docs/intro">http://www.tinkerpatch.com/Docs/intro</a></span></p>
<p><span style="font-size: 15px">github   <a target="_blank" rel="noopener" href="https://github.com/Tencent/tinker">https://github.com/Tencent/tinker</a></span></p>
<p><span style="font-size: 15px">作者：Tencent</span></p>
<h2 id="22viewpagerindicator"><a href="#22-ViewPagerIndicator" class="headerlink" title="22.ViewPagerIndicator"></a>22.ViewPagerIndicator<a href="#22viewpagerindicator" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款基于ViewPager的页面指示器开源框架</span></p>
<p><span style="font-size: 15px">上榜理由：上古神器，尽管已经五年未更新了，但你仍然可以在淘宝等app中看到它的使用场景，8.9K的star量让它不愠不火的在矗立在榜单里</span></p>
<p><span style="font-size: 15px">官网地址 <a target="_blank" rel="noopener" href="http://viewpagerindicator.com/">http://viewpagerindicator.com/</a></span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/JakeWharton/ViewPagerIndicator">https://github.com/JakeWharton/ViewPagerIndicator</a></span></p>
<p><span style="font-size: 15px">作者：JakeWharton </span></p>
<p><span style="font-size: 15px">使用：</span></p>
<p><span style="font-size: 15px"> 下载 地址<a target="_blank" rel="noopener" href="https://github.com/JakeWharton/Android-ViewPagerIndicator/zipball/master"> https://github.com/JakeWharton/Android-ViewPagerIndicator/zipball/master</a></span></p>
<p><span style="font-size: 15px"> </span></p>
<h2 id="23android-cleanarchitecture"><a href="#23-Android-CleanArchitecture" class="headerlink" title="23.Android-CleanArchitecture"></a>23.Android-CleanArchitecture<a href="#23android-cleanarchitecture" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一个讲解设计框架的demo</span></p>
<p><span style="font-size: 15px">上榜理由：它不是框架，你可以把它当作一本书，它将教会你如何设计简洁的架构，工程里有一个sample app，配合图文讲解，你将对Android客户端的架构有更深一层的认识。8.8k的star数量，证明了它是一本“好书”哟。</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/android10/Android-CleanArchitecture">https://github.com/android10/Android-CleanArchitecture</a></span></p>
<p><span style="font-size: 15px">作者：Fernando Cejas</span></p>
<h2 id="24android-pulltorefresh"><a href="#24-Android-PullToRefresh" class="headerlink" title="24..Android-PullToRefresh"></a>24..Android-PullToRefresh<a href="#24android-pulltorefresh" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款为普通视图提供刷新UI的视图框架</span></p>
<p><span style="font-size: 15px">上榜理由：8.2K的star数量使它位居刷新类UI框架榜首，强大的兼容能力，该框架支持ListView，GrdiView，WebViewScrollView，ViewPager等众多View增加刷新的能力，如果你有增加上拉加载，下拉加载的需求，你应该考虑它了！</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/chrisbanes/Android-PullToRefresh">https://github.com/chrisbanes/Android-PullToRefresh</a></span></p>
<p><span style="font-size: 15px">作者：Chris Banes</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<p><span style="font-size: 15px">github fork源码，集成到项目中</span></p>
<h2 id="25flexbox-layout"><a href="#25-flexbox-layout" class="headerlink" title="25.flexbox-layout"></a>25.flexbox-layout<a href="#25flexbox-layout" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款弹性伸缩布局</span></p>
<p><span style="font-size: 15px">上榜理由：8.1k个star，前端H5开发者转Android开发的福音，FlexboxLayout作为<code>LinearLayout</code>和<code>RelativeLayout的替代者，值得各位一试，与其一同推出的还有ConstraintLayout。</code></span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/google/flexbox-layout">https://github.com/google/flexbox-layout</a></span></p>
<p><span style="font-size: 15px">作者：Google</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre><span style="color: #000000">dependencies {
    compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.google.android:flexbox:0.3.0-alpha3</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

</div>

<h2 id="26androidswipelayout"><a href="#26-AndroidSwipeLayout" class="headerlink" title="26.AndroidSwipeLayout"></a>26.AndroidSwipeLayout<a href="#26androidswipelayout" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：非常强大滑动式布局</span></p>
<p><span style="font-size: 15px">上榜理由:滑动删除是国产app常见需求，商品详情的上下滑动需求作为开发者的我们也经常遇到，AndroidSwipeLayout在github上拥有8K个star，证明它经受住了检验，各位值得一试</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/daimajia/AndroidSwipeLayout">https://github.com/daimajia/AndroidSwipeLayout</a></span></p>
<p><span style="font-size: 15px">作者：daimajia</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre><span style="color: #000000">dependencies {
    compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.android.support:recyclerview-v7:21.0.0</span><span style="color: #800000">'</span> <span style="color: #000000">compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.android.support:support-v4:20.+</span><span style="color: #800000">'</span> <span style="color: #000000">compile</span> <span style="color: #800000">"</span><span style="color: #800000">com.daimajia.swipelayout:library:1.2.0@aar</span><span style="color: #800000">"</span> <span style="color: #000000">}</span></pre>

</div>

<p><span style="font-size: 15px">或下载 </span></p>
<p><span style="font-size: 15px"><a target="_blank" rel="noopener" href="https://github.com/daimajia/AndroidSwipeLayout/releases/download/v1.1.8/AndroidSwipeLayout-v1.1.8.jar">AndroidSwipeLayout-v1.1.8.jar</a></span></p>
<h2 id="27realm-java"><a href="#27-realm-java" class="headerlink" title="27.realm-java"></a>27.realm-java<a href="#27realm-java" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：Realm是一款移动端数据库框架</span></p>
<p><span style="font-size: 15px">上榜理由：核心数据引擎C++打造，比普通的Sqlite型数据库快的多。笔者猜测正是如此，realm以7892个star数让它位于大名鼎鼎的数据库框架GreenDao（7877）之前</span></p>
<p><span style="font-size: 15px">官网地址：<a target="_blank" rel="noopener" href="https://realm.io/cn/">https://realm.io/cn/</a></span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/realm/realm-java">https://github.com/realm/realm-java</a></span></p>
<p><span style="font-size: 15px">作者：Realm团队 </span></p>
<p><span style="font-size: 15px">使用：<a target="_blank" rel="noopener" href="https://realm.io/docs/java/latest/">https://realm.io/docs/java/latest/</a></span></p>
<h2 id="28greendao"><a href="#28-greenDAO" class="headerlink" title="28.greenDAO"></a>28.greenDAO<a href="#28greendao" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：greenDAO是一款高效、快速的SQLite型数据库</span></p>
<p><span style="font-size: 15px">上榜理由：greenDAO的star数量与Realm不相上下，且与EventBus师出同门，也是由greenrobot团队开发维护的，质量有所保证，但若拷问笔者Realm与greenDao两者的优劣性，只能具体到实际使用当中，模拟线上的使用情形，进行高强度测试后才能下判断，故在此不能一言两语说完，深表遗憾</span></p>
<p><span style="font-size: 15px">官网地址：<a target="_blank" rel="noopener" href="http://greenrobot.org/greendao/">http://greenrobot.org/greendao/</a></span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/greenrobot/greenDAO">https://github.com/greenrobot/greenDAO</a></span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre><span style="color: #000000">buildscript {
    repositories {
        jcenter()
        mavenCentral()</span> <span style="color: #008000">//</span> <span style="color: #008000">add repository</span>
 <span style="color: #000000">}
    dependencies {
        classpath</span> <span style="color: #800000">'</span><span style="color: #800000">com.android.tools.build:gradle:2.3.1</span><span style="color: #800000">'</span> <span style="color: #000000">classpath</span> <span style="color: #800000">'</span><span style="color: #800000">org.greenrobot:greendao-gradle-plugin:3.2.2</span><span style="color: #800000">'</span> <span style="color: #008000">//</span> <span style="color: #008000">add plugin</span>
 <span style="color: #000000">}
}</span> -----

apply plugin: <span style="color: #800000">'</span><span style="color: #800000">com.android.application</span><span style="color: #800000">'</span> <span style="color: #000000">apply plugin:</span> <span style="color: #800000">'</span><span style="color: #800000">org.greenrobot.greendao</span><span style="color: #800000">'</span> <span style="color: #008000">//</span> <span style="color: #008000">apply plugin</span>
 <span style="color: #000000">dependencies {
    compile</span> <span style="color: #800000">'</span><span style="color: #800000">org.greenrobot:greendao:3.2.2</span><span style="color: #800000">'</span> <span style="color: #008000">//</span> <span style="color: #008000">add library</span>
}</pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<h2 id="29stetho"><a href="#29-stetho" class="headerlink" title="29.stetho"></a>29.stetho<a href="#29stetho" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款提供在Chrome开发者工具上调试Android app能力的开源框架</span></p>
<p><span style="font-size: 15px">上榜理由：上古时期Android程序员要调试本地数据库，需要进入Android Device Monitor找到/data/data/com.xxx.xxx/databases里面的db文件，导出到PC端，用PC的数据工具查看，现在使用stetho省却了如此的麻烦；如今的Android程序员如果想调试网络请求响应过程中的报文段，需要在请求中加入Log语句，一个信息一个信息打印出来，相当繁琐，现在请使用stetho，省却诸如此类的麻烦把！7.8K个star数，广大Android开发者调试的福音，你值得拥有！</span></p>
<p><span style="font-size: 15px">作者：FaceBook</span></p>
<p><span style="font-size: 15px">官网地址：<a target="_blank"> http://facebook.github.io/stetho/</a></span></p>
<p><span style="font-size: 15px">github   <a target="_blank" rel="noopener" href="https://github.com/facebook/stetho">https://github.com/facebook/stetho</a></span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre>compile <span style="color: #800000">'</span><span style="color: #800000">com.facebook.stetho:stetho:1.5.0</span><span style="color: #800000">'</span></pre>

</div>

<h2 id="30baserecyclerviewadapterhelper"><a href="#30-BaseRecyclerViewAdapterHelper" class="headerlink" title="30.BaseRecyclerViewAdapterHelper"></a>30.BaseRecyclerViewAdapterHelper<a href="#30baserecyclerviewadapterhelper" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：强大、流畅的Recyvlerview通用适配器</span></p>
<p><span style="font-size: 15px">上榜理由：如果你是RecyclerView的拥簇者，你一定要体验这款专门服务该view的适配器，7.7K个star，让这个家伙位于github上Android 适配器排行榜第一，还有很多惊喜等你去探寻！</span></p>
<p><span style="font-size: 15px">官网地址：<a target="_blank" rel="noopener" href="http://www.recyclerview.org/">http://www.recyclerview.org/</a></span></p>
<p><span style="font-size: 15px">作者：陈宇明以及他的小伙伴</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre><span style="color: #000000">allprojects {
    repositories {
        ...
        maven { url</span> <span style="color: #800000">"</span><span style="color: #800000">https://jitpack.io</span><span style="color: #800000">"</span> <span style="color: #000000">}
    }
}

dependencies {
        compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.github.CymChad:BaseRecyclerViewAdapterHelper:VERSION_CODE</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<h2 id="31androidviewanimations"><a href="#31-AndroidViewAnimations" class="headerlink" title="31.AndroidViewAnimations"></a>31.AndroidViewAnimations<a href="#31androidviewanimations" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款提供可爱动画集合的框架</span></p>
<p><span style="font-size: 15px">上榜理由：正如作者所说，它囊括了开发需求过程中所有的动画效果，集成进了这个简洁可爱的动画框架。7.6K的star数，证明了它在动画框架领域的战斗力，让它仅仅位列lottie-android和Material-Animations两个动画框架霸主之后，屈居第三名</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/daimajia/AndroidViewAnimations">https://github.com/daimajia/AndroidViewAnimations</a></span></p>
<p><span style="font-size: 15px">作者：daimajia</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre><span style="color: #000000">dependencies {
        compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.android.support:support-compat:25.1.1</span><span style="color: #800000">'</span> <span style="color: #000000">compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.daimajia.easing:library:2.0@aar</span><span style="color: #800000">'</span> <span style="color: #000000">compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.daimajia.androidanimations:library:2.2@aar</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

</div>

<p><span style="font-size: 15px">sample：</span></p>
<div class="cnblogs_code">

<pre><span style="color: #000000">YoYo.with(Techniques.Tada)
    .duration(</span><span style="color: #800080">700</span><span style="color: #000000">)
    .repeat(</span><span style="color: #800080">5</span><span style="color: #000000">)
    .playOn(findViewById(R.id.edit_area));</span></pre>

</div>

<h2 id="32-materialdrawer"><a href="#32-MaterialDrawer" class="headerlink" title="32. MaterialDrawer"></a>32. MaterialDrawer<a href="#32-materialdrawer" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：强大的塑料风格的抽屉框架</span></p>
<p><span style="font-size: 15px">上榜理由：7.6K的star数量，作者的持续更新状态，如果你还在犹豫上手SlidingMenu遇到bug没人管的困境，那么你可以入手它作为你的抽屉布局 </span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/mikepenz/MaterialDrawer">https://github.com/mikepenz/MaterialDrawer</a></span></p>
<p><span style="font-size: 15px">作者：Mike Penz</span></p>
<p><span style="font-size: 15px">使用:</span></p>
<div class="cnblogs_code">

<pre>compile(<span style="color: #800000">'</span><span style="color: #800000">com.mikepenz:materialdrawer:5.9.2@aar</span><span style="color: #800000">'</span><span style="color: #000000">) {
    transitive</span> = <span style="color: #0000ff">true</span> <span style="color: #000000">}</span></pre>

</div>

<div class="cnblogs_code">

<pre><span style="color: #0000ff">new</span> DrawerBuilder().withActivity(<span style="color: #0000ff">this</span>).build();</pre>

</div>

<h2 id="33android-observablescrollview"><a href="#33-Android-ObservableScrollView" class="headerlink" title="33.Android-ObservableScrollView"></a>33.Android-ObservableScrollView<a href="#33android-observablescrollview" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款让视图滑动更具有视觉效果的滑动式框架</span></p>
<p><span style="font-size: 15px">上榜理由：7.5K的star数量，证明了它曾经的价值，github上提供了12种滑动效果，你可以用它弥补其他框架的不足，提升你的App体验！</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/ksoichiro/Android-ObservableScrollView">https://github.com/ksoichiro/Android-ObservableScrollView</a></span></p>
<p><span style="font-size: 15px">作者：Soichiro Kashima</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre>compile com.github.ksoichiro:android-observablescrollview</pre>

</div>

<h2 id="34circleimageview"><a href="#34-CircleImageView" class="headerlink" title="34.CircleImageView"></a>34.CircleImageView<a href="#34circleimageview" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：圆角ImageView</span></p>
<p><span style="font-size: 15px">上榜理由：也许你已经听说过无数种展示圆角图片的方法，但如果你不尝试尝试CircleImageView，那么你的知识库会因为少了它黯然失色，有的时候完成需求是开发者优先考虑的，不同实现方法牵扯到的性能差异更值得让人深思，如果你有心在<strong>图片性能</strong>上有所涉猎，那么CircleImageView绝对不会让你败兴而归。最后别忘了记得去看Romain Guy的建议哟。</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/hdodenhof/CircleImageView">https://github.com/hdodenhof/CircleImageView</a></span></p>
<p><span style="font-size: 15px">作者：Henning Dodenhof</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre><span style="color: #000000">dependencies {
    ...
    compile</span> <span style="color: #800000">'</span><span style="color: #800000">de.hdodenhof:circleimageview:2.1.0</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

</div>

<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre><<span style="color: #000000">de.hdodenhof.circleimageview.CircleImageView
    xmlns:app</span>=<span style="color: #800000">"</span><span style="color: #800000">http://schemas.android.com/apk/res-auto</span><span style="color: #800000">"</span> <span style="color: #000000">android:id</span>=<span style="color: #800000">"</span><span style="color: #800000">@+id/profile_image</span><span style="color: #800000">"</span> <span style="color: #000000">android:layout_width</span>=<span style="color: #800000">"</span><span style="color: #800000">96dp</span><span style="color: #800000">"</span> <span style="color: #000000">android:layout_height</span>=<span style="color: #800000">"</span><span style="color: #800000">96dp</span><span style="color: #800000">"</span> <span style="color: #000000">android:src</span>=<span style="color: #800000">"</span><span style="color: #800000">@drawable/profile</span><span style="color: #800000">"</span> <span style="color: #000000">app:civ_border_width</span>=<span style="color: #800000">"</span><span style="color: #800000">2dp</span><span style="color: #800000">"</span> <span style="color: #000000">app:civ_border_color</span>=<span style="color: #800000">"</span><span style="color: #800000">#FF000000</span><span style="color: #800000">"</span>/></pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<h2 id="35logger"><a href="#35-logger" class="headerlink" title="35.logger"></a>35.logger<a href="#35logger" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款让log日志优雅显示的框架</span></p>
<p><span style="font-size: 15px">上榜理由：logger作为调试框架，并未给出很强大的能力，它最大的亮点是优雅的输出log信息，并且支持多种格式：线程、Json、Xml、List、Map等，如果你整日沉迷于汪洋大海般的log信息不能自拔，logger就是你的指路明灯！6.6k个star让他位列调试框架第二名，屈居facebook的stetho之后</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/orhanobut/logger">https://github.com/orhanobut/logger</a></span></p>
<p><span style="font-size: 15px">作者：Orhan Obut</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre>compile <span style="color: #800000">'</span><span style="color: #800000">com.orhanobut:logger:2.1.1</span><span style="color: #800000">'</span></pre>

</div>

<div class="cnblogs_code">

<pre><span style="color: #000000">Logger.d(MAP);
Logger.d(SET);
Logger.d(LIST);
Logger.d(ARRAY);</span> <span style="color: #000000">Logger.json(JSON_CONTENT);
Logger.xml(XML_CONTENT);</span></pre>

</div>

<h2 id="36agera"><a href="#36-agera" class="headerlink" title="36.agera"></a>36.agera<a href="#36agera" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍:一款服务于Android平台的响应式编程框架</span></p>
<p><span style="font-size: 15px">上榜理由：google专门推出一套响应式编程框架服务于Android开发者，相比于之响应式编程框架榜首的 RxJava RxAndroid，它更轻量，两者最大的不同点在于agera基于push event、pull data （VS Rx系列 push data）。</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/google/agera">https://github.com/google/agera</a></span></p>
<p><span style="font-size: 15px">作者：Google</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre>  compile <span style="color: #800000">'</span><span style="color: #800000">com.google.android.agera:agera:1.3.0</span><span style="color: #800000">'</span></pre>

</div>

<p>扩展能力</p>
<div class="cnblogs_code">

<pre>  compile <span style="color: #800000">'</span><span style="color: #800000">com.google.android.agera:content:1.3.0</span><span style="color: #800000">'</span> <span style="color: #000000">compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.google.android.agera:database:1.3.0</span><span style="color: #800000">'</span> <span style="color: #000000">compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.google.android.agera:net:1.3.0</span><span style="color: #800000">'</span> <span style="color: #000000">compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.google.android.agera:rvadapter:1.3.0</span><span style="color: #800000">'</span> <span style="color: #000000">compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.google.android.agera:rvdatabinding:1.3.0</span><span style="color: #800000">'</span></pre>

</div>

<h2 id="37bottombar"><a href="#37-BottomBar" class="headerlink" title="37.BottomBar"></a>37.BottomBar<a href="#37bottombar" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款底部导航栏视图框架</span></p>
<p><span style="font-size: 15px">上榜理由：底部栏里的王者框架，6.3K的star数量，证明了它的优秀，完全遵循材料设计规范，上手非常方便。如果说缺点，无法设置icon与titile的间距，无法自定义视图的大小等，但这些都可以通过修改源代码解决，笔者献丑也修改了一套符合国内开发者的底部导航框架，即将开源。</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/roughike/BottomBar">https://github.com/roughike/BottomBar</a></span></p>
<p><span style="font-size: 15px">作者：Iiro Krankka</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre>compile <span style="color: #800000">'</span><span style="color: #800000">com.roughike:bottom-bar:2.3.1</span><span style="color: #800000">'</span></pre>

</div>

<h2 id="38calligraphy"><a href="#38-Calligraphy" class="headerlink" title="38.Calligraphy"></a>38.Calligraphy<a href="#38calligraphy" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款自定义字体框架</span></p>
<p><span style="font-size: 15px">上榜理由：如果你还在为一键修改App内所有字体样式而烦恼，6.3K个star的Calligraphy就值得你拥有，它可以同时修改整个整个项目的Textview字体，也可以单独 设置某个Textview的字体，还在等什么，快来试试吧！</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/chrisjenx/Calligraphy">https://github.com/chrisjenx/Calligraphy</a></span></p>
<p><span style="font-size: 15px">作者：Christopher Jenkins</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre><span style="color: #000000">dependencies {
    compile</span> <span style="color: #800000">'</span><span style="color: #800000">uk.co.chrisjenx:calligraphy:2.3.0</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

</div>

<h2 id="39androidslidinguppanel"><a href="#39-AndroidSlidingUpPanel" class="headerlink" title="39.AndroidSlidingUpPanel"></a>39.AndroidSlidingUpPanel<a href="#39androidslidinguppanel" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：可拖动的滑动面板视图框架</span></p>
<p><span style="font-size: 15px">上榜理由：如果你的项目需要一个可拖拽的滑动式面板（展示某些详情信息，播放音乐，地图信息等），那么推荐你使用它，6.3k个star，来自创业公司umano的作品，证明它是用心推出的杰作</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/umano/AndroidSlidingUpPanel">https://github.com/umano/AndroidSlidingUpPanel</a></span></p>
<p><span style="font-size: 15px">作者：umano<span class="author"><a target="_blank" rel="noopener" href="https://github.com/umano">
</a></span></span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre><span style="color: #000000">dependencies {
    repositories {
        mavenCentral()
    }
    
    compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.sothree.slidinguppanel:library:3.3.1</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<h2 id="40appintro"><a href="#40-AppIntro" class="headerlink" title="40.AppIntro"></a>40.AppIntro<a href="#40appintro" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款提供快速制作欢迎页的框架</span></p>
<p><span style="font-size: 15px">上榜理由：笔者从未把打算把欢迎页框架纳入排行榜当中，作为国内开发者，ViewPager开发App的欢迎页已经是手到擒来的需求，为何一个开源的欢迎页框架会在github上拥有6.3k个star？也许你会不屑一顾，是的，往往就在不屑一顾的瞬间，机遇就悄悄溜走了。</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/apl-devs/AppIntro">https://github.com/apl-devs/AppIntro</a></span></p>
<p><span style="font-size: 15px">作者：Paolo Rotolo</span></p>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre> <span style="color: #000000">allprojects {
        repositories {
            ...
            maven { url</span> <span style="color: #800000">'</span><span style="color: #800000">https://jitpack.io</span><span style="color: #800000">'</span> <span style="color: #000000">}
        }
    }
    
    dependencies {
            compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.github.apl-devs:appintro:v4.2.0</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<h2 id="41recyclerview-animators"><a href="#41-recyclerview-animators" class="headerlink" title="41.recyclerview-animators"></a>41.recyclerview-animators<a href="#41recyclerview-animators" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款为Recyclerview提供扩展动画能力的框架</span></p>
<p><span style="font-size: 15px">上榜理由：有一句老话：如果有天你失去对新事物的兴趣，那就说明你老了。recyclerview已经推出快三年了，还在用listview的人们，是否已经发掘自己渐渐变老；不要灰心，快为你的项目加入recyclerview-animators框架吧，为“自己”加入新鲜的血液和能量！（笔者备注：6.2K个star）</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/wasabeef/recyclerview-animators">https://github.com/wasabeef/recyclerview-animators</a></span></p>
<p><span style="font-size: 15px">作者；<a target="_blank" rel="noopener" href="https://github.com/wasabeef">https://github.com/wasabeef</a></span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre><span style="color: #000000">dependencies {</span> <span style="color: #008000">//</span> <span style="color: #008000">jCenter</span>
  compile <span style="color: #800000">'</span><span style="color: #800000">jp.wasabeef:recyclerview-animators:2.2.6</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

</div>

<h2 id="42dagger"><a href="#42-dagger" class="headerlink" title="42.dagger"></a>42.dagger<a href="#42dagger" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款通过依赖注入降低程序间耦合的开发框架</span></p>
<p><span style="font-size: 15px">上榜理由：github 上dagger1版本 有6.2k个star ， dagger2版本有7.3k个；由square完成的dagger1版本，到如今google团队接手的dagger2版本，强力开发团队保证了代码在设计上的优越性；如果你想探究Android 领域的设计模式，这也是不错的选择。</span></p>
<p><span style="font-size: 15px">官网地址：<a target="_blank" rel="noopener" href="https://google.github.io/dagger/">https://google.github.io/dagger/</a></span></p>
<p><span style="font-size: 15px">github ：<a target="_blank" rel="noopener" href="https://github.com/google/dagger">https://github.com/google/dagger</a></span></p>
<p><span style="font-size: 15px">作者：google</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre><span style="color: #000000">dependencies {
  compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.google.dagger:dagger:2.x</span><span style="color: #800000">'</span> <span style="color: #000000">annotationProcessor</span> <span style="color: #800000">'</span><span style="color: #800000">com.google.dagger:dagger-compiler:2.x</span><span style="color: #800000">'</span> <span style="color: #000000">}
If you</span><span style="color: #800000">'</span><span style="color: #800000">re using classes in dagger.android you</span><span style="color: #800000">'</span><span style="color: #000000">ll also want to include:

compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.google.dagger:dagger-android:2.x</span><span style="color: #800000">'</span> <span style="color: #000000">compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.google.dagger:dagger-android-support:2.x</span><span style="color: #800000">'</span>
annotationProcessor <span style="color: #800000">'</span><span style="color: #800000">com.google.dagger:dagger-android-processor:2.x</span><span style="color: #800000">'</span></pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<h2 id="43android-bootstarp"><a href="#43-Android-Bootstarp" class="headerlink" title="43.Android-Bootstarp"></a>43.Android-Bootstarp<a href="#43android-bootstarp" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款提供在Android应用上实现Bootstrap（web框架）所作出效果的框架</span></p>
<p><span style="font-size: 15px">上榜理由：榜单上第二款响应web技术的Android 端框架，还记得第一名是谁吗——flexbox-layout，作为Android开发者，你有必要去了解Web技术了。5.9k个star，证明它不容小觑</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/Bearded-Hen/Android-Bootstrap">https://github.com/Bearded-Hen/Android-Bootstrap</a></span></p>
<p><span style="font-size: 15px">作者:Bearded-Hen团队</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre><span style="color: #000000">dependencies {
   compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.beardedhen:androidbootstrap:{X.X.X}</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

</div>

<h2 id="44rxbinding"><a href="#44-RxBinding" class="headerlink" title="44.RxBinding"></a>44.RxBinding<a href="#44rxbinding" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款提供UI组件事件响应能力的框架</span></p>
<p><span style="font-size: 15px">上榜理由：如果你还未开始RxAndroid 之旅，RxBinding可以作为你的第一站，通过RXBinding，你将理解响应式编程的快乐，让项目里的事件流程更清晰。5.6K个star，RxAndroid作者亲自操刀，快来试用吧！</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/JakeWharton/RxBinding">https://github.com/JakeWharton/RxBinding</a></span></p>
<p><span style="font-size: 15px">作者：JakeWharton</span></p>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre><span style="color: #000000">Platform bindings:

compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.jakewharton.rxbinding2:rxbinding:2.0.0</span><span style="color: #800000">'</span>
<span style="color: #800000">'</span><span style="color: #800000">support-v4</span><span style="color: #800000">'</span> <span style="color: #000000">library bindings:

compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.jakewharton.rxbinding2:rxbinding-support-v4:2.0.0</span><span style="color: #800000">'</span>
<span style="color: #800000">'</span><span style="color: #800000">appcompat-v7</span><span style="color: #800000">'</span> <span style="color: #000000">library bindings:

compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.jakewharton.rxbinding2:rxbinding-appcompat-v7:2.0.0</span><span style="color: #800000">'</span>
<span style="color: #800000">'</span><span style="color: #800000">design</span><span style="color: #800000">'</span> <span style="color: #000000">library bindings:

compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.jakewharton.rxbinding2:rxbinding-design:2.0.0</span><span style="color: #800000">'</span>
<span style="color: #800000">'</span><span style="color: #800000">recyclerview-v7</span><span style="color: #800000">'</span> <span style="color: #000000">library bindings:

compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.jakewharton.rxbinding2:rxbinding-recyclerview-v7:2.0.0</span><span style="color: #800000">'</span>
<span style="color: #800000">'</span><span style="color: #800000">leanback-v17</span><span style="color: #800000">'</span> <span style="color: #000000">library bindings:

compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.jakewharton.rxbinding2:rxbinding-leanback-v17:2.0.0</span><span style="color: #800000">'</span></pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<h2 id="45listviewanimations"><a href="#45-ListViewAnimations" class="headerlink" title="45.ListViewAnimations"></a>45.ListViewAnimations<a href="#45listviewanimations" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款为ListView提供动展示画效果能力的框架</span></p>
<p><span style="font-size: 15px">上榜理由：如果有一天我承认自己老了，我还会排排我的兄弟——ListView，证明我和它一起战斗过。ListViewAnimations的存在就是证明我们这些“老年人”仍有用武之地，也许你有说不出口的难处，无法体会到RecyclerView里动画的快乐，拥有ListViewAnimations，你一样可以骄傲的说，我的孩子（每个item）也有自己的动效啦。（笔者备注 5.6K个star）</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/nhaarman/ListViewAnimations">https://github.com/nhaarman/ListViewAnimations</a></span></p>
<p><span style="font-size: 15px">作者：nhaarman</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre><span style="color: #000000">repositories {
    mavenCentral()
}

dependencies {
    compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.nhaarman.listviewanimations:lib-core:3.1.0@aar</span><span style="color: #800000">'</span> <span style="color: #000000">compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.nhaarman.listviewanimations:lib-manipulation:3.1.0@aar</span><span style="color: #800000">'</span> <span style="color: #000000">compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.nhaarman.listviewanimations:lib-core-slh:3.1.0@aar</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<h2 id="46uitimaterecyclerview"><a href="#46-UItimateRecyclerView" class="headerlink" title="46.UItimateRecyclerView"></a>46.UItimateRecyclerView<a href="#46uitimaterecyclerview" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款提供刷新、加载更多、动画特效等额外能力的RecyclerView框架</span></p>
<p><span style="font-size: 15px">上榜理由：榜单上第三次出现RecyclerView的身影，足以证明RecyclerView的优异性，5.5K个star，框架里所提供众多的能力，如果你是个功利开发者，那么此框架会为你节省很多学习时间，它可以完成多item式布局的大多数需求，值得注意的是，这个项目也是在其他项目的思路上二次开发的。</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/cymcsg/UltimateRecyclerView">https://github.com/cymcsg/UltimateRecyclerView</a></span></p>
<p><span style="font-size: 15px">作者：MarshalChen</span></p>
<p><span style="font-size: 15px">使用</span>：</p>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre><span style="color: #000000">repositories {
    jcenter()
    }
dependencies {
    ...
    compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.marshalchen.ultimaterecyclerview:library:0.7.2</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<h2 id="47ucrop"><a href="#47-uCrop" class="headerlink" title="47.uCrop"></a>47.uCrop<a href="#47ucrop" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款优雅的图片裁剪框架</span></p>
<p><span style="font-size: 15px">上榜理由：5.3K个star，图片编辑模块单独拎出来也是一款优雅的App。</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/Yalantis/uCrop">https://github.com/Yalantis/uCrop</a></span></p>
<p><span style="font-size: 15px">作者：Yalantis</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre><span style="color: #000000">allprojects {
   repositories {
      jcenter()
      maven { url</span> <span style="color: #800000">"</span><span style="color: #800000">https://jitpack.io</span><span style="color: #800000">"</span> <span style="color: #000000">}
   }
}

compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.github.yalantis:ucrop:2.2.1</span><span style="color: #800000">'</span> </pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<h2 id="48rxjava-android-samples"><a href="#48-RxJava-Android-Samples" class="headerlink" title="48.RxJava-Android-Samples"></a>48.RxJava-Android-Samples<a href="#48rxjava-android-samples" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款介绍RxJava使用场景的app</span></p>
<p><span style="font-size: 15px">上榜理由：榜单出现的第一个<strong>“仅仅为告诉你如何使用另一个项目”</strong>的开源项目，它可以说是RxJava的用例，你想得到的想不到的RxJava用法这里都有，这就是为什么它以5.2k个star矗立在这份榜单里的原因。遗憾自己没有创作这么一个受人追捧的demo？赶快动手写个其他的“XX项目用例吧”</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/kaushikgopal/RxJava-Android-Samples">https://github.com/kaushikgopal/RxJava-Android-Samples</a></span></p>
<p><span style="font-size: 15px">作者：kaushikgopal</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<p><span style="font-size: 15px">clone到本地慢慢探索吧</span></p>
<h2 id="49androidautolayout"><a href="#49-AndroidAutoLayout" class="headerlink" title="49.AndroidAutoLayout"></a>49.AndroidAutoLayout<a href="#49androidautolayout" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一个提供适配能力的框架</span></p>
<p><span style="font-size: 15px">上榜理由：5.2K个star，鸿洋老弟的作品，适合小项目的开发团队，拿到设计MM的px像素设计稿是不是很头疼捏？这个框架一键式搞定你的问题，它有很多的不足，但在追求完美适配的路上，你值得探索和了解它！笔者并不推荐把它应用到已经成熟运行的项目中，毕竟市面上已经有太多的适配解决方案了，适配问题就像是个大杂烩，想炒一盘好菜，就得备好各种佐料（适配小方案），当你把各种小佐料用的炉火纯青的时候，你离美食大厨就不远了。</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/hongyangAndroid/AndroidAutoLayout">https://github.com/hongyangAndroid/AndroidAutoLayout</a></span></p>
<p><span style="font-size: 15px">作者：张鸿洋</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre><span style="color: #000000">dependencies {
    compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.zhy:autolayout:1.4.5</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

</div>

<h2 id="50effectiveandroidui"><a href="#50-EffectiveAndroidUI" class="headerlink" title="50.EffectiveAndroidUI"></a>50.EffectiveAndroidUI<a href="#50effectiveandroidui" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款讲解高效展示UI的教学型App</span></p>
<p><span style="font-size: 15px">上榜理由：编程新手很难对MVC MVP,MVVM等模式有深刻的理解，如果有一个示例型app，那对初学者会有很大裨益，笔者在遇到它时也是相见恨晚。4.8K个star，证明了它经受了广大开发者的考验与审视，其中Effective UI的编程思想更是与Android官方课程里的Effective UI课程不谋而合，并且，此项目还包含了fragment、dagger、主题样式、Butterknife等众多小知识点，作为编程初学者的学习用例再适合不过了</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/pedrovgs/EffectiveAndroidUI">https://github.com/pedrovgs/EffectiveAndroidUI</a></span></p>
<p><span style="font-size: 15px">作者：Pedro Vicente </span></p>
<p><span style="font-size: 15px">使用：</span></p>
<p><span style="font-size: 15px">clone项目到本地</span></p>
<h2 id="51luban"><a href="#51-Luban" class="headerlink" title="51.Luban"></a>51.Luban<a href="#51luban" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：最接近微信的图片压缩框架</span></p>
<p><span style="font-size: 15px">上榜理由：好的思路总是可以让你大放异彩，Luban仅以图片压缩单一功能，俘获了4.8K个star，证明了它在图片压缩上的造诣，它可能不是最优秀的，但它是让你我最接近伟大的项目</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/Curzibn/Luban">https://github.com/Curzibn/Luban</a></span></p>
<p><span style="font-size: 15px">作者：Curzibn</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre>compile <span style="color: #800000">'</span><span style="color: #800000">top.zibin:Luban:1.1.1</span><span style="color: #800000">'</span></pre>

</div>

<h2 id="52droidplugin"><a href="#52-DroidPlugin" class="headerlink" title="52.DroidPlugin"></a>52.DroidPlugin<a href="#52droidplugin" class="header-anchor">#</a></h2><p>一句话介绍：一款热门的插件化开发框架</p>
<p>上榜理由：4.8K个star，插件化框架榜单第一名，，360团队出品，框架质量有保证，有成功案例——360手机助手，并且持续维护着</p>
<p>github <a target="_blank" rel="noopener" href="https://github.com/DroidPluginTeam/DroidPlugin/blob/master/readme_cn.md">https://github.com/DroidPluginTeam/DroidPlugin/blob/master/readme_cn.md</a></p>
<p>作者：Andy Zhang</p>
<p>使用:</p>
<p>clone项目到本地</p>
<h2 id="53-otto"><a href="#53-otto" class="headerlink" title="53. otto"></a>53. otto<a href="#53-otto" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍:一款老旧且强大的事件总线框架</span></p>
<p><span style="font-size: 15px">上榜理由：4.8K个star，是square团队早先推出的事件响应型框架，淘宝app的事件驱动也是基于此框架封装的，如今square已经建议开发者采用RxJava RxAndroid来代替otto了。但otto仍有与EventBus横向对比的价值，纵向来说，otto与square自家开发的Rx系列框架的差异同样值得开发者们去探究。</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/square/otto">https://github.com/square/otto</a></span></p>
<p><span style="font-size: 15px">作者：square</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre><span style="color: #000000">repositories {
    mavenCentral()
    maven { url</span> <span style="color: #800000">"</span><span style="color: #800000">https://oss.sonatype.org/content/repositories/snapshots/</span><span style="color: #800000">"</span> <span style="color: #000000">}
}

compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.michaelpardo:activeandroid:3.1.0-SNAPSHOT</span><span style="color: #800000">'</span></pre>

</div>

<h2 id="54u2020"><a href="#54-u2020" class="headerlink" title="54.u2020"></a>54.u2020<a href="#54u2020" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款提供<strong>Dagger的高级教学示例</strong>的app（额，名字是有点绕）</span></p>
<p><span style="font-size: 15px">上榜理由：4.7K个star，JakeWharton牵头开发的教学类app，教你使用Dagger在其他高级框架的用法，它展示了Dagger与ButterKnife、Retrofit、Moshi、Picasso、Okhttp、RxJava、Timber、Madge、LeakCanar等众多优秀框架结合起来的高级用法，你也可以借鉴到自己的项目当中</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/JakeWharton/u2020">https://github.com/JakeWharton/u2020</a></span></p>
<p><span style="font-size: 15px">作者：JakeWharton</span></p>
<p><span style="font-size: 15px"> </span></p>
<h2 id="55buck"><a href="#55-buck" class="headerlink" title="55.buck"></a>55.buck<a href="#55buck" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：buck是一个快速构建系统</span></p>
<p><span style="font-size: 15px">上榜理由：facebook+google出身的作者，对构建代码的出色理解，加上大型团队的维护，以及增量更新时的快速高效，让buck成为了微信Android团队构建项目的首选，构建大型项目时，它比gradle更快，然而中小公司并不适合此框架，但作为立志在框架设计领域有一番作为的人们，欢迎来一探究竟</span></p>
<p><span style="font-size: 15px">官网地址：<a target="_blank" rel="noopener" href="https://buckbuild.com/">https://buckbuild.com/</a></span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/facebook/buck">https://github.com/facebook/buck</a></span></p>
<p><span style="font-size: 15px">作者：facebook</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre>linux or mac system  +docs</pre>

</div>

<h2 id="56permissionsdispatcher"><a href="#56-PermissionsDispatcher" class="headerlink" title="56.PermissionsDispatcher"></a>56.PermissionsDispatcher<a href="#56permissionsdispatcher" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款基于注解的提供<strong>解决运行时危险权限</strong>方案的框架</span></p>
<p><span style="font-size: 15px">上榜理由：自Android6.0 Google提出危险权限一词起，用户安全性被提到一定的高度，一些运行时对用户较为危险的权限将不再自动被开发者获取，需要经过用户批准，开发者才可以继续使用该权限，如果你曾经被权限问题搞的抓耳挠腮，建议你试试这个框架，它足够解决你的问题</span></p>
<p><span style="font-size: 15px">官网地址：<a target="_blank" rel="noopener" href="https://hotchemi.github.io/PermissionsDispatcher/">https://hotchemi.github.io/PermissionsDispatcher/</a></span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/hotchemi/PermissionsDispatcher">https://github.com/hotchemi/PermissionsDispatcher</a></span></p>
<p><span style="font-size: 15px">作者：Shintaro Katafuchi</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre><span style="color: #000000">dependencies {
  compile(</span><span style="color: #800000">'</span><span style="color: #800000">com.github.hotchemi:permissionsdispatcher:${latest.version}</span><span style="color: #800000">'</span><span style="color: #000000">) {</span>
      exclude module: <span style="color: #800000">"</span><span style="color: #800000">support-v13</span><span style="color: #800000">"</span> <span style="color: #000000">}
  annotationProcessor</span> <span style="color: #800000">'</span><span style="color: #800000">com.github.hotchemi:permissionsdispatcher-processor:${latest.version}</span><span style="color: #800000">'</span> <span style="color: #000000">}</span>  <span style="color: #000000">repositories {
  jcenter()
  maven { url</span> <span style="color: #800000">'</span><span style="color: #800000">http://oss.jfrog.org/artifactory/oss-snapshot-local/</span><span style="color: #800000">'</span> <span style="color: #000000">}
}</span></pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<h2 id="57android-gif-drawable"><a href="#57-android-gif-drawable" class="headerlink" title="57.android-gif-drawable"></a>57.android-gif-drawable<a href="#57android-gif-drawable" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍:一款提供展示GIF动画能力的视图框架</span></p>
<p><span style="font-size: 15px">上榜理由：据我所查国内著名App——知乎使用了android-gif-drawable，因此证明了它的存在价值，尽管在榜单第十一位介绍了lottie-android直接应用AE动画的示例，但AE设计师不是每个公司都配备的，GIF的存在，就必然存在了展示GIF的需要，它值得你拥有！</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/koral--/android-gif-drawable">https://github.com/koral–/android-gif-drawable</a></span></p>
<p><span style="font-size: 15px">作者：Karol Wrótniak</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre><span style="color: #000000">repositories {
    mavenCentral()
    maven { url</span> <span style="color: #800000">"</span><span style="color: #800000">https://oss.sonatype.org/content/repositories/snapshots</span><span style="color: #800000">"</span> <span style="color: #000000">}
}
dependencies {
    compile</span> <span style="color: #800000">'</span><span style="color: #800000">pl.droidsonroids.gif:android-gif-drawable:1.2.+</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<h2 id="58apktool"><a href="#58-Apktool" class="headerlink" title="58.Apktool"></a>58.Apktool<a href="#58apktool" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款反编译apk的工具</span></p>
<p><span style="font-size: 15px">上榜理由：开源的反编译工具，对于志在了解apk逆向破解的诸位，值得拥有，4.5k个star，逆向破解apk神器！</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/iBotPeaches/Apktool">https://github.com/iBotPeaches/Apktool</a></span></p>
<p><span style="font-size: 15px">官网地址：<a target="_blank" rel="noopener" href="https://ibotpeaches.github.io/Apktool/">https://ibotpeaches.github.io/Apktool/</a></span></p>
<p><span style="font-size: 15px">作者：Connor Tumbleson</span></p>
<h2 id="59dynamic-load-apk"><a href="#59-dynamic-load-apk" class="headerlink" title="59.dynamic-load-apk"></a>59.dynamic-load-apk<a href="#59dynamic-load-apk" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：插件化开发框架</span></p>
<p><span style="font-size: 15px">上榜理由：4.5k个star，位于插件化开发框架第二名（第一名来自360团队），全面的文档介绍让你很快就能上手插件化开发，如果你喜欢大段文字讲解，那么这个项目一定适合你</span></p>
<p><span style="font-size: 15px">github：<a target="_blank" rel="noopener" href="https://github.com/singwhatiwanna/dynamic-load-apk">https://github.com/singwhatiwanna/dynamic-load-apk</a></span></p>
<p><span style="font-size: 15px">作者：singwhatiwanna</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<p><span style="font-size: 15px">github上的文档配合作者博客更配哟</span></p>
<h2 id="60atlas"><a href="#60-atlas" class="headerlink" title="60.atlas"></a>60.atlas<a href="#60atlas" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：淘宝推出的组件化开发框架</span></p>
<p><span style="font-size: 15px">上榜理由：淘宝团队所出的精品，atlas框架提供了解耦、组件、动态的开发能力，4.5k个star让他位列组件化开发框架第一名</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/alibaba/atlas">https://github.com/alibaba/atlas</a></span></p>
<p><span style="font-size: 15px">作者：alibaba</span></p>
<h2 id="61volley"><a href="#61-volley" class="headerlink" title="61.volley"></a>61.volley<a href="#61volley" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：google推荐使用的Android端网络请求框架</span></p>
<p><span style="font-size: 15px">上榜理由：4.4k个star，并不是他不够优秀，而是使用volley已经渐渐成为广大开发者的习惯</span></p>
<p><span style="font-size: 15px">github h<a target="_blank">ttps://github.com/google/volley</a>（新版volley地址）</span></p>
<p><span style="font-size: 15px">作者：google</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<p><span style="font-size: 15px">clone源码到本地</span></p>
<h2 id="62androidmvp"><a href="#62-androidmvp" class="headerlink" title="62.androidmvp"></a>62.androidmvp<a href="#62androidmvp" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款展示Android端Mvp设计的demo</span></p>
<p><span style="font-size: 15px">上榜理由：榜单里为数不多、仅凭展示某种设计模式就获得4.2K个star的项目，如果你有尝试mvp的打算，androidmvp可以作为你的前哨站</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/antoniolg/androidmvp">https://github.com/antoniolg/androidmvp</a></span></p>
<p><span style="font-size: 15px">作者：Antonio Leiva</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<p><span style="font-size: 15px">clone到本地</span></p>
<h2 id="63swipebacklayout"><a href="#63-SwipeBackLayout" class="headerlink" title="63.SwipeBackLayout"></a>63.SwipeBackLayout<a href="#63swipebacklayout" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍:一款可以让你通过滑动手势关闭页面的的框架</span></p>
<p><span style="font-size: 15px">上榜理由：仿微信滑动退出当前聊天界面的效果，提供了activity的滑动关闭能力，通过这种思路，实现fragment的滑动关闭轻而易举;笔者坚持建议诸位clone源码到本地探索一番；4.2k个star证明很多人都喜爱它</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/ikew0ng/SwipeBackLayout">https://github.com/ikew0ng/SwipeBackLayout</a></span></p>
<p><span style="font-size: 15px">作者：ike_w0ng</span></p>
<p><span style="font-size: 15px"> 使用:</span></p>
<div class="cnblogs_code">

<pre>compile <span style="color: #800000">'</span><span style="color: #800000">me.imid.swipebacklayout.lib:library:1.0.0</span><span style="color: #800000">'</span></pre>

</div>

<h2 id="64flycotablayout"><a href="#64-FlycoTabLayout" class="headerlink" title="64.FlycoTabLayout"></a>64.FlycoTabLayout<a href="#64flycotablayout" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款可以让作出多种多样指示器效果的框架</span></p>
<p><span style="font-size: 15px">上榜理由：尽管我们没有理由为了给app加入页面指示器功能就集成2.5M的依赖库，但是作为了解viewpager或swip views的指示器设计原理的优秀框架，你值得打开它试试，笔者建议单独拆分所需源码，加入到自己的项目中去。4.1K个star，二次开发的作品，仍然推荐！</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/ikew0ng/SwipeBackLayout">https://github.com/H07000223/FlycoTabLayout</a></span></p>
<p><span style="font-size: 15px">作者：Flyco</span></p>
<h2 id="65android-testing"><a href="#65-android-testing" class="headerlink" title="65.android-testing"></a>65.android-testing<a href="#65android-testing" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款展示四大自动化测试框架用例的demo（Espresso，UiAutomator，AndroidJunitRunner，JUnit4）</span></p>
<p><span style="font-size: 15px">上榜理由：学习者经常会陷入似懂非懂的境地，如果你有幸学习过Android Testing Support Library site的课程，那么你一定对android的四大测试框架迫不及待，这款demo非常适合你，快来学习这个4.1k个star的明星项目吧</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/googlesamples/android-testing">https://github.com/googlesamples/android-testing</a></span></p>
<p><span style="font-size: 15px">作者：googlesampes团队</span></p>
<h2 id="66filedownloader"><a href="#66-FileDownloader" class="headerlink" title="66.FileDownloader"></a>66.FileDownloader<a href="#66filedownloader" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款高效、稳定、灵活、易用的<strong>文件下载引擎</strong></span></p>
<p><span style="font-size: 15px">上榜理由：4.1k证明了它有多受人喜爱，文件下载看似简单的背后暗藏了多少的坑坑点点，我知道你有能力自己实现文件下载功能，但优秀的框架可以提升你的设计编码能力，这款框架可以提升你的实力！</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/lingochamp/FileDownloader">https://github.com/lingochamp/FileDownloader</a></span></p>
<p><span style="font-size: 15px">作者:LingoChamp团队</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre><span style="color: #000000">dependencies {
    compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.liulishuo.filedownloader:library:1.5.5</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

</div>

<h2 id="67jiecaovideoplayer"><a href="#67-JieCaoVideoPlayer" class="headerlink" title="67.JieCaoVideoPlayer"></a>67.JieCaoVideoPlayer<a href="#67jiecaovideoplayer" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：基于MediaPlayer api——VideoView 的多媒体播放框架</span></p>
<p><span style="font-size: 15px">上榜理由：榜单里第三款多媒体播放框架，它以灵巧的身姿挤入本榜单，精巧是它最大的优点，不到100k，拥有它，你就可以快速开发类似今日头条那样的视频播放效果，4k个star，证明它值得一试</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/lipangit/JieCaoVideoPlayer">https://github.com/lipangit/JieCaoVideoPlayer</a></span></p>
<p><span style="font-size: 15px">作者：Nathen</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre>compile <span style="color: #800000">'</span><span style="color: #800000">fm.jiecao:jiecaovideoplayer:5.5.4</span><span style="color: #800000">'</span></pre>

</div>

<h2 id="68glide-transformations"><a href="#68-glide-transformations" class="headerlink" title="68.glide-transformations"></a>68.glide-transformations<a href="#68glide-transformations" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：为众多著名图片加载框架<strong>提供图片形状变幻能力</strong>的框架</span></p>
<p><span style="font-size: 15px">上榜理由：在榜单靠前的部分已经介绍过glide，Picasso，Fresco等图片加载框架，glide-transformations就是一款为他们提供图片变形能力的框架，使用起来非常简单，因此受到了大家的喜爱，github上有3.8K个star</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/wasabeef/glide-transformations">https://github.com/wasabeef/glide-transformations</a></span></p>
<p><span style="font-size: 15px">作者：Daichi Furiya</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre><span style="color: #000000">repositories {
    jcenter()
}

dependencies {
    compile</span> <span style="color: #800000">'</span><span style="color: #800000">jp.wasabeef:glide-transformations:2.0.2</span><span style="color: #800000">'</span>
    <span style="color: #008000">//</span> <span style="color: #008000">If you want to use the GPU Filters</span>
    compile <span style="color: #800000">'</span><span style="color: #800000">jp.co.cyberagent.android.gpuimage:gpuimage-library:1.4.1</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<p><span style="font-size: 15px">在Glide里设置变幻效果</span></p>
<div class="cnblogs_code">

<pre><span style="color: #000000">Set Glide Transform.

Glide.with(</span><span style="color: #0000ff">this</span><span style="color: #000000">).load(R.drawable.demo)
        .bitmapTransform(</span><span style="color: #0000ff">new</span> <span style="color: #000000">BlurTransformation(context))
        .into((ImageView) findViewById(R.id.image));</span></pre>

</div>

<h2 id="69android-gpuimage"><a href="#69-android-gpuimage" class="headerlink" title="69.android-gpuimage"></a>69.android-gpuimage<a href="#69android-gpuimage" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款基于OpenGL的图片渲染引擎</span></p>
<p><span style="font-size: 15px">上榜理由：放下GpuImage在IOS平台的荣誉不谈，Android版的android-gpuimage就提供多达70多种图片渲染效果，你还在好奇美图秀秀是如何实现图片变幻的？有了它，一切都不是问题。如果你是美图工具类的工程师，此框架的建设思路也会对你大有裨益。笔者也是通过android-gpuimage仿造了美图App并俘获女友芳心的，再次为它的实力点赞。ios版+android版一共19k个star，已经证明了它的实力，还在等什么呢？</span></p>
<p><span style="font-size: 15px">github：<a target="_blank" rel="noopener" href="https://github.com/CyberAgent/android-gpuimage">https://github.com/CyberAgent/android-gpuimage</a></span></p>
<p><span style="font-size: 15px">作者：CyberAgent 团队</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre><span style="color: #000000">repositories {
    jcenter()
}

dependencies {
    compile</span> <span style="color: #800000">'</span><span style="color: #800000">jp.co.cyberagent.android.gpuimage:gpuimage-library:1.4.1</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<p><span style="font-size: 15px">更多的改造方法，还需要阅读Ios的编程文档，对于有毅力的小伙伴强力推荐！</span></p>
<h2 id="70rxpermissions"><a href="#70-RxPermissions" class="headerlink" title="70.RxPermissions"></a>70.RxPermissions<a href="#70rxpermissions" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款基于RxJava完成权限申请的框架</span></p>
<p><span style="font-size: 15px">上榜理由：榜单里第二款提供权服务的框架，基于RxJava的设计，让你可以专心写业务，3.7K个star已经证明了它的实用价值</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/tbruyelle/RxPermissions">https://github.com/tbruyelle/RxPermissions</a></span></p>
<p><span style="font-size: 15px">作者：Thomas Bruyelle</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre><span style="color: #000000">repositories {
    jcenter()</span> <span style="color: #008000">//</span> <span style="color: #008000">If not already there</span>
<span style="color: #000000">}

dependencies {
    compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.tbruyelle.rxpermissions:rxpermissions:0.9.4@aar</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<p><span style="font-size: 15px">优雅的使用：</span></p>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre>RxPermissions rxPermissions = <span style="color: #0000ff">new</span> RxPermissions(<span style="color: #0000ff">this</span>);

<span style="color: #000000">rxPermissions
    .request(Manifest.permission.CAMERA)
    .subscribe(granted</span> -> <span style="color: #000000">{</span> <span style="color: #0000ff">if</span> (granted) { <span style="color: #008000">//</span> <span style="color: #008000">I can control the camera now</span>
        } <span style="color: #0000ff">else</span> <span style="color: #000000">{</span> <span style="color: #008000">//</span> <span style="color: #008000">Oups permission denied</span>
 <span style="color: #000000">}
    });</span></pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<h2 id="71freeline"><a href="#71-freeline" class="headerlink" title="71.freeline"></a>71.freeline<a href="#71freeline" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款动态替换的编译构建框架</span></p>
<p><span style="font-size: 15px">上榜理由：继Facebook的Buck，Androdi官方的InstRun之后，蚂蚁金服推出了Freeline编译框架，官网宣称**Freeline与业内主流构建方式相比仍然有数倍的速度领先;**排行有先后，编译速度并不在本榜单排序的考据因素中，因此freeline以3.7个star，暂列编译框架第二名</span></p>
<p><span style="font-size: 15px">官网地址：<a target="_blank" rel="noopener" href="https://www.freelinebuild.com/">https://www.freelinebuild.com/</a></span></p>
<p><span style="font-size: 15px">github：<a target="_blank" rel="noopener" href="https://github.com/alibaba/freeline">https://github.com/alibaba/freeline</a></span></p>
<p><span style="font-size: 15px">作者：alibaba</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre><span style="color: #000000">buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath</span> <span style="color: #800000">'</span><span style="color: #800000">com.antfortune.freeline:gradle:0.8.7</span><span style="color: #800000">'</span> <span style="color: #000000">}
}</span></pre>

<pre>apply <span class="pl-c1">plugin: <span class="pl-s"><span class="pl-pds">'com.antfortune.freeline<span class="pl-pds">'

<span class="pl-en">android {
    <span class="pl-k">...
}</span></span></span></span></span></span></pre>

<p>File → Settings… → Plugins → Browse repositories →freeline.</p>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<h2 id="72rxlifecycle"><a href="#72-RxLifecycle" class="headerlink" title="72.RxLifecycle"></a>72.RxLifecycle<a href="#72rxlifecycle" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款提供在<strong>使用RxJava过程中管理Activity和Fragment生命周期能力</strong>的框架</span></p>
<p><span style="font-size: 15px">上榜理由：在榜单靠前的部分，你已经了解RxJava和RxAndroid的强大之处，但部分粗心的开发者因为没有及时取消订阅而产生严重的内存泄漏，不要担心，RxLifecycle可以为你解决难题，在gtihub上拥有3.7K个star，国内知名软件——知乎和淘宝也都在使用它</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/trello/RxLifecycle">https://github.com/trello/RxLifecycle</a></span></p>
<p><span style="font-size: 15px">作者：trello团队</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<p><span style="font-size: 15px">clone源码到本地</span></p>
<h2 id="73classyshark"><a href="#73-classyshark" class="headerlink" title="73.classyshark"></a>73.classyshark<a href="#73classyshark" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款可执行文件浏览器</span></p>
<p><span style="font-size: 15px">上榜理由：榜单里继Apktool之后第二款apk逆向工具，如果你喜欢优雅的图形数据展示，那么你一定不能错过他，classyshark可以将破解的结果以图形化展示用户，方便分析，3.7K个star，让它暂列apk逆向工具第二位！</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/google/android-classyshark">https://github.com/google/android-classyshark</a></span></p>
<p><span style="font-size: 15px">作者：google</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<p><span style="font-size: 15px"><span style="color: #24292e; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;">下载 </span><a target="_blank" rel="noopener" href="https://github.com/google/android-classyshark/releases">JAR</a><span style="color: #24292e; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;"> </span></span></p>
<h2 id="74acra"><a href="#74-acra" class="headerlink" title="74.acra"></a>74.acra<a href="#74acra" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款提供<strong>记录**</strong>APP崩溃日志能力**的框架</span></p>
<p><span style="font-size: 15px">上榜理由：如果你面临着收集APP崩溃日志的需求，那么acra是个不错的选择。3.7K个star，让acra位列崩溃日志框架排行榜第一名，acra有足够的能力记录线上APP，并且发回服务端，acra也提供了相当棒的崩溃日志统计服务端框架<span style="background-color: #f5f8fd; font-family: monospace; text-indent: 28px">Acralyzer</span>，cralyzer工作在Apache CouchDB之上，所以除了CouchDB之外，没有必要安装任何额外的软件，移动端开发者也可以借此学习服务端的建设，一举两得！</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/ACRA/acra">https://github.com/ACRA/acra</a></span></p>
<p><span style="font-size: 15px">服务端github  <a target="_blank" rel="noopener" href="https://github.com/ACRA/acralyzer">https://github.com/ACRA/acralyzer</a></span></p>
<p><span style="font-size: 15px">作者：acra团队</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<p><span style="font-size: 15px">没有什么方法比clone源码到本地更方便了</span></p>
<h2 id="75disklrucache"><a href="#75-DiskLruCache" class="headerlink" title="75.DiskLruCache"></a>75.DiskLruCache<a href="#75disklrucache" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款提供<strong>磁盘文件缓存管理能力</strong>的框架</span></p>
<p><span style="font-size: 15px">上榜理由：3.7k个star并不足以说明DiskLruCache的优秀，仅仅以管理磁盘文件能力单独拎出来成为一个框架，作者需要很大的勇气，很幸运，作者做到了，并且也成为Google官网提倡的缓存  ；如还记得上次做“一键清除缓存”、“查看缓存文件大小”功能是什么时候吗？DiskLruCache一句话就可以搞定！</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/JakeWharton/DiskLruCache">https://github.com/JakeWharton/DiskLruCache</a></span></p>
<p><span style="font-size: 15px">作者：JakeWharton</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre>compile <span style="color: #800000">'</span><span style="color: #800000">com.jakewharton:disklrucache:2.0.2</span><span style="color: #800000">'</span></pre>

</div>

<p><span style="font-size: 15px">或者下载 <a target="_blank" rel="noopener" href="https://search.maven.org/remote_content?g=com.jakewharton&a=disklrucache&v=LATEST">latest .jar</a></span></p>
<h2 id="76dexposed"><a href="#76-dexposed" class="headerlink" title="76.dexposed"></a>76.dexposed<a href="#76dexposed" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款支撑阿里大部分App客户端热修复、线上调试能力的框架</span></p>
<p><span style="font-size: 15px">上榜理由：榜单上再次出现热修复框架的身影，证明App热修复技术的火热，dexposed提供图形化的性能监控、在线热修复bug漏洞、支持AOP编程思想等，不论你是企业热修复技术的设计者还是打算在热修复领域一探究竟的新人，这款框架很适合你。3.5k个star，证明它作为一门技术框架的存在，是多么令人喜爱！</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/alibaba/dexposed">https://github.com/alibaba/dexposed</a></span></p>
<p><span style="font-size: 15px">作者：alibaba</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre><span style="color: #000000">dependencies {
        compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.taobao.android:dexposed:0.1.1@aar</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

</div>

<h2 id="77litho"><a href="#77-Litho" class="headerlink" title="77.Litho"></a>77.Litho<a href="#77litho" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款提供<strong>高效构建UI能力</strong>的框架 </span></p>
<p><span style="font-size: 15px">上榜理由：作为一款专门构建UI的框架，Litho高效的地方在于：单独开辟了用于渲染和布局的线程，然后将创建好的组件传递给UI线程去完成最终的渲染，使用更少的视图层级，来提升界面的滚动速度，值得注意的是，它仅支持开发者作出<strong>不可改变的UI组件</strong> **,**3.5K个star，证明了它在构建UI领域的价值，更多的妙处，期待你亲自去发掘！</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/facebook/litho">https://github.com/facebook/litho</a></span></p>
<p><span style="font-size: 15px">作者：facebook</span></p>
<p><span style="font-size: 15px"> 使用</span>：</p>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre><span style="color: #000000">ependencies {</span> <span style="color: #008000">//</span> <span style="color: #008000">...</span> <span style="color: #008000">//</span> <span style="color: #008000">Litho</span>
  compile <span style="color: #800000">'</span><span style="color: #800000">com.facebook.litho:litho-core:0.3.1</span><span style="color: #800000">'</span> <span style="color: #000000">compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.facebook.litho:litho-widget:0.3.1</span><span style="color: #800000">'</span> <span style="color: #000000">provided</span> <span style="color: #800000">'</span><span style="color: #800000">com.facebook.litho:litho-annotations:0.3.1</span><span style="color: #800000">'</span> <span style="color: #000000">annotationProcessor</span> <span style="color: #800000">'</span><span style="color: #800000">com.facebook.litho:litho-processor:0.3.1</span><span style="color: #800000">'</span>

  <span style="color: #008000">//</span> <span style="color: #008000">SoLoader</span>
  compile <span style="color: #800000">'</span><span style="color: #800000">com.facebook.soloader:soloader:0.2.0</span><span style="color: #800000">'</span>

  <span style="color: #008000">//</span> <span style="color: #008000">Optional</span> <span style="color: #008000">//</span> <span style="color: #008000">For debugging</span>
  debugCompile <span style="color: #800000">'</span><span style="color: #800000">com.facebook.litho:litho-stetho:0.3.1</span><span style="color: #800000">'</span>

  <span style="color: #008000">//</span> <span style="color: #008000">For integration with Fresco</span>
  compile <span style="color: #800000">'</span><span style="color: #800000">com.facebook.litho:litho-fresco:0.3.1</span><span style="color: #800000">'</span>

  <span style="color: #008000">//</span> <span style="color: #008000">For testing</span>
  testCompile <span style="color: #800000">'</span><span style="color: #800000">com.facebook.litho:litho-testing:0.3.1</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<h2 id="78mosby"><a href="#78-mosby" class="headerlink" title="78.mosby"></a>78.mosby<a href="#78mosby" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款提供<strong>构建MVP项目能力</strong>的框架</span></p>
<p><span style="font-size: 15px">上榜理由：榜单靠前的部分已经介绍了MVC,MVVM,MVP的框架项目，想必此时你在构建企业项目架构上，选择或者开发一款合适的MVP框架迫在眉睫，mosby可以作为你的第一步参考，你可以封装它，也可以照抄它，无论如何，3.4K个star，证明了它在框架设计上有多受开发者的喜爱</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/sockeqwe/mosby">https://github.com/sockeqwe/mosby</a></span></p>
<p><span style="font-size: 15px">作者：Hannes Dorfmann</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre><span style="color: #000000">dependencies {

  compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.hannesdorfmann.mosby3:mvi:3.0.4</span><span style="color: #800000">'</span> <span style="color: #008000">//</span> <span style="color: #008000">Model-View-Intent</span> <span style="color: #008000">//</span> <span style="color: #008000">or</span>
  compile <span style="color: #800000">'</span><span style="color: #800000">com.hannesdorfmann.mosby3:mvp:3.0.4</span><span style="color: #800000">'</span> <span style="color: #008000">//</span> <span style="color: #008000">Plain MVP</span> <span style="color: #008000">//</span> <span style="color: #008000">or</span>
  compile <span style="color: #800000">'</span><span style="color: #800000">com.hannesdorfmann.mosby3:viewstate:3.0.4</span><span style="color: #800000">'</span> <span style="color: #008000">//</span> <span style="color: #008000">MVP + ViewState support</span>
}</pre>

<pre><span class="pl-en">allprojects {
  repositories {
    <span class="pl-k">...

    maven { url <span class="pl-s"><span class="pl-pds">"https://oss.sonatype.org/content/repositories/snapshots/<span class="pl-pds">" }
}</span></span></span></span></span></pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<h2 id="79andresguard"><a href="#79-AndResGuard" class="headerlink" title="79.AndResGuard"></a>79.AndResGuard<a href="#79andresguard" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款提供资源文件路径混淆 的工具</span></p>
<p><span style="font-size: 15px">上榜理由：如果你是个对APK大小很敏感的人，那么AndResGuard一定适合你，它的原理类似Java Proguard，但是只针对资源。他会将原本冗长的资源路径变短，例如将<code>res/drawable/wechat</code>变为<code>r/d/a，3.4K个star，证明了在优化APK道路上，你不是一个人在战斗！</code></span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/shwenzhang/AndResGuard">https://github.com/shwenzhang/AndResGuard</a></span></p>
<p><span style="font-size: 15px">作者：wechat team</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<p><span style="font-size: 15px">clone项目到本地，其实也就是个三两句话的文档</span></p>
<h2 id="80statusbarutil"><a href="#80-StatusBarUtil" class="headerlink" title="80.StatusBarUtil"></a>80.StatusBarUtil<a href="#80statusbarutil" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款提供<strong>设置沉浸式状态栏样式</strong>能力的框架</span></p>
<p><span style="font-size: 15px">上榜理由：设计师MM总是抱怨系统状态栏不优雅？那就给她一个完美的沉浸式状态栏。StatusBarUtil可以随心所欲的设置状态栏样式，3.3K个star，足以说明它有多受设计MM的喜爱</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/laobie/StatusBarUtil">https://github.com/laobie/StatusBarUtil</a></span></p>
<p><span style="font-size: 15px">作者：Jaeger</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre>compile <span style="color: #800000">'</span><span style="color: #800000">com.jaeger.statusbarutil:library:1.4.0</span><span style="color: #800000">'</span></pre>

</div>

<h2 id="81robolectric"><a href="#81-robolectric" class="headerlink" title="81.robolectric"></a>81.robolectric<a href="#81robolectric" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款不依赖于Android设备的单元测试框架，</span></p>
<p><span style="font-size: 15px">上榜理由：sample中列举了如何对Android四大组件和常见功能测试的用例，3.2K个star，值得充满好奇心的人尝试</span></p>
<p><span style="font-size: 15px">官网地址：<a target="_blank" rel="noopener" href="http://robolectric.org/">http://robolectric.org/</a></span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/robolectric/robolectric">https://github.com/robolectric/robolectric</a></span></p>
<p><span style="font-size: 15px">作者：robolectric</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre>testCompile <span style="color: #800000">"</span><span style="color: #800000">org.robolectric:robolectric:3.3.2</span><span style="color: #800000">"</span></pre>

</div>

<h2 id="82fragmentation"><a href="#82-Fragmentation" class="headerlink" title="82.Fragmentation"></a>82.Fragmentation<a href="#82fragmentation" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍:一款提供<strong>管理Fragmen嵌套</strong>t能力的框架</span></p>
<p><span style="font-size: 15px">上榜理由：对于Activity和Fragment使用，你一定得心应手，但如果要做一套通用的Activity&amp;Fragment嵌套设计，想必你有点手足无措了，Fragmentation可以作为你设计Fragment管理上的第一步，3.2K个star，笔者认为有点名副其实了，项目介绍里说的是Fragment的管理能力，但并未提供Fragment&amp;Activity生命周期、任务栈的管理能力，因此很难直接应用到企业项目当中，但源码当中的设计思路，值得笔者与诸位借鉴，拾人牙慧留有余香！</span></p>
<p><span style="font-size: 15px">github：<a target="_blank" rel="noopener" href="https://github.com/YoKeyword/Fragmentation">https://github.com/YoKeyword/Fragmentation</a></span></p>
<p><span style="font-size: 15px">作者：YoKey</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre><span style="color: #008000">//</span> <span style="color: #008000">appcompat v7包是必须的</span>
compile <span style="color: #800000">'</span><span style="color: #800000">me.yokeyword:fragmentation:0.10.7</span><span style="color: #800000">'</span>
<span style="color: #008000">//</span> <span style="color: #008000">如果想使用SwipeBack 滑动边缘退出Fragment/Activity功能，请再添加下面的库</span> <span style="color: #008000">//</span> <span style="color: #008000">compile 'me.yokeyword:fragmentation-swipeback:0.10.4'</span></pre>

</div>

<h2 id="83small"><a href="#83-Small" class="headerlink" title="83.Small"></a>83.Small<a href="#83small" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：轻巧的插件化框架</span></p>
<p><span style="font-size: 15px">上榜理由：作为插件框架榜单的新成员，Small的优点是轻巧，适合作为小团队的插件开发方案，3.1K个star，让它获得了<strong>酷狗音乐</strong>等著名开发团队的青睐，如果你们的团队想逐步实施插件化开发，Small是个不错的选择！</span></p>
<p><span style="font-size: 15px"> 官网地址：<a target="_blank" rel="noopener" href="http://code.wequick.net/Small/cn/cases">http://code.wequick.net/Small/cn/cases</a></span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/wequick/Small">https://github.com/wequick/Small</a></span></p>
<p><span style="font-size: 15px">作者：wequick 团队</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre><span style="color: #000000">buildscript  {
    dependencies {
        classpath</span> <span style="color: #800000">'</span><span style="color: #800000">net.wequick.tools.build:gradle-small:1.2.0-alpha6</span><span style="color: #800000">'</span> <span style="color: #000000">}
}

apply plugin:</span> <span style="color: #800000">'</span><span style="color: #800000">net.wequick.small</span><span style="color: #800000">'</span> <span style="color: #000000">small {
    aarVersion</span> = <span style="color: #800000">'</span><span style="color: #800000">1.2.0-alpha6</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<h2 id="84jsbridge"><a href="#84-JsBridge" class="headerlink" title="84.JsBridge"></a>84.JsBridge<a href="#84jsbridge" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款提供WebView和Javascript通信能力的框架</span></p>
<p><span style="font-size: 15px">上榜理由：该框架提供给了<strong>允许H5页面调用通过JS调用App方法的能力；</strong>3.1K个star，简洁的通讯方式，值得每一个Web\Hybrid App开发者尝试</span></p>
<p><span style="font-size: 15px">gtihub <a target="_blank" rel="noopener" href="https://github.com/lzyzsd/JsBridge">https://github.com/lzyzsd/JsBridge</a></span></p>
<p><span style="font-size: 15px">作者：hi大头鬼hi</span></p>
<p><span style="font-size: 15px">使用</span>：</p>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre><span style="color: #000000">repositories {</span> <span style="color: #008000">//</span> <span style="color: #008000">...</span>
    maven { url <span style="color: #800000">"</span><span style="color: #800000">https://jitpack.io</span><span style="color: #800000">"</span> <span style="color: #000000">}
}

dependencies {
    compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.github.lzyzsd:jsbridge:1.0.4</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<h2 id="85richeditor-android"><a href="#85-richeditor-android" class="headerlink" title="85.richeditor-android"></a>85.richeditor-android<a href="#85richeditor-android" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款强大的富文本编辑框架 </span></p>
<p><span style="font-size: 15px">上榜理由：2.8k个star，榜单里第一个为TextView提供扩展能力的框架，你暂时不需要它，但不能不知道它</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/wasabeef/richeditor-android">https://github.com/wasabeef/richeditor-android</a></span></p>
<p><span style="font-size: 15px">作者：Daichi Furiya</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre><span style="color: #000000">repositories {
    jcenter()
}

dependencies {
    compile</span> <span style="color: #800000">'</span><span style="color: #800000">jp.wasabeef:richeditor-android:1.2.2</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<h2 id="86transitions-everywhere"><a href="#86-Transitions-Everywhere" class="headerlink" title="86.Transitions-Everywhere"></a>86.Transitions-Everywhere<a href="#86transitions-everywhere" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款教你正确使用Transitions API（Android 转场动画API）的教学型项目</span></p>
<p><span style="font-size: 15px">上榜理由：你可能还未尝试过Android API的Transitions 框架，可能听过，但却无法做出优雅奇妙的动效——别担心，Transitions-Everywhere正如它的名字一样，它将带你全面体验Transitions 的强大之处</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/andkulikov/Transitions-Everywhere">https://github.com/andkulikov/Transitions-Everywhere</a></span></p>
<p><span style="font-size: 15px">作者：Andrey Kulikov</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre><span style="color: #000000">dependencies {
    compile</span> <span style="color: #800000">"</span><span style="color: #800000">com.andkulikov:transitionseverywhere:1.7.4</span><span style="color: #800000">"</span> <span style="color: #000000">}</span></pre>

</div>

<h2 id="87android-viewbadger"><a href="#87-android-viewbadger" class="headerlink" title="87.android-viewbadger"></a>87.android-viewbadger<a href="#87android-viewbadger" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：能够快速的<strong>为Android 视图加入“勋章</strong>”能力的框架</span></p>
<p><span style="font-size: 15px">上榜理由：如果说勋章一词听起来陌生，那么显示已读未读个数、小红点标记信息这一类词语你一定不太陌生，笔者相信在诸位实际开发中经常遇到为某些item加入小红点标记的需求，聪明的各位一定有着各种实现方案，为什么不能快速优雅的完成呢？android-viewbadger可以帮你实现，当然，在某些情况下，你需要具备修改源码的能力，以符合设计MM的需求！值得注意的是，这宽项目已经五年没有更新了！</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/jgilfelt/android-viewbadger">https://github.com/jgilfelt/android-viewbadger</a></span></p>
<p><span style="font-size: 15px">作者：Jeff Gilfelt</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<p><span style="font-size: 15px">clone源码到本地</span></p>
<div class="cnblogs_code">

<pre>View target = <span style="color: #000000">findViewById(R.id.target_view);
BadgeView badge</span> = <span style="color: #0000ff">new</span> BadgeView(<span style="color: #0000ff">this</span><span style="color: #000000">, target);
badge.setText(</span><span style="color: #800000">"</span><span style="color: #800000">1</span><span style="color: #800000">"</span><span style="color: #000000">);
badge.show();</span></pre>

</div>

<h2 id="88androidwifiadb"><a href="#88-AndroidWiFiADB" class="headerlink" title="88.AndroidWiFiADB"></a>88.AndroidWiFiADB<a href="#88androidwifiadb" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款不用数据线也可以让你调试手机设备APP的插件项目</span></p>
<p><span style="font-size: 15px">上榜理由：你是否还在担心测试过程中<strong>高强度的拔插数据线</strong>对手机电池和USB端口<strong>造成</strong>终生难以弥补<strong>的损害</strong>？别担心，有wifi有AndroidWiFiADB，无须数据线也可以调试应用了，更有趣的是，在测试工程师一边拿着手机一边找你聊bug的时候，你已经偷偷在它的手机上修复了bug，深藏功与名！</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/pedrovgs/AndroidWiFiADB">https://github.com/pedrovgs/AndroidWiFiADB</a></span></p>
<p><span style="font-size: 15px">作者：Pedro Vicente Gómez Sánchez</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre>Preferences/Settings->Plugins->Browse Repositories->serch AndroidWiFiADB</pre>

</div>

<h2 id="89emojicon"><a href="#89-emojicon" class="headerlink" title="89.emojicon"></a>89.emojicon<a href="#89emojicon" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款提供在TextView、EdiText展示表情包能力的框架</span></p>
<p><span style="font-size: 15px">上榜理由：2.7k个star，,榜单第二款增强TextView显示能力的框架，这款专为表情包设计，如果你曾经好奇微信、QQ的表情显示是如何做到的？这款框架一定能满足你的求知欲。</span></p>
<h2 id="90packer-ng-plugin"><a href="#90-packer-ng-plugin" class="headerlink" title="90.packer-ng-plugin"></a>90.packer-ng-plugin<a href="#90packer-ng-plugin" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款打爆工具插件</span></p>
<p><span style="font-size: 15px">上榜利用：笔者尽力维护榜单涉及范围的全面性，因此引入此插件项目——项目号称完成100个渠道包只需要10秒钟，在市面上各种各样多渠道打包方案的今天，选择一款适合自己团队的，才是上上选择</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/mcxiaoke/packer-ng-plugin">https://github.com/mcxiaoke/packer-ng-plugin</a></span></p>
<p><span style="font-size: 15px">作者：Xiaoke Zhang</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre><span style="color: #000000">buildscript {
    ......
    dependencies{</span> <span style="color: #008000">//</span> <span style="color: #008000">add packer-ng</span>
        classpath <span style="color: #800000">'</span><span style="color: #800000">com.mcxiaoke.gradle:packer-ng:1.0.9</span><span style="color: #800000">'</span> <span style="color: #000000">}
}</span> </pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre>apply plugin: <span style="color: #800000">'</span><span style="color: #800000">packer</span><span style="color: #800000">'</span> <span style="color: #000000">dependencies {
    compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.mcxiaoke.gradle:packer-helper:1.0.9</span><span style="color: #800000">'</span> <span style="color: #000000">}

 android {</span> <span style="color: #008000">//</span><span style="color: #008000">...</span>
 <span style="color: #000000">signingConfigs {
      release {</span> <span style="color: #008000">//</span> <span style="color: #008000">满足下面两个条件时需要此配置</span> <span style="color: #008000">//</span> <span style="color: #008000">1\. Gradle版本 >= 2.14.1</span> <span style="color: #008000">//</span> <span style="color: #008000">2\. Android Gradle Plugin 版本 >= 2.2.0</span> <span style="color: #008000">//</span> <span style="color: #008000">作用是只使用旧版签名，禁用V2版签名模式</span>
        v2SigningEnabled <span style="color: #0000ff">false</span> <span style="color: #000000">}
    }
  }</span></pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<h2 id="91android-priority-jobqueue"><a href="#91-android-priority-jobqueue" class="headerlink" title="91.android-priority-jobqueue"></a>91.android-priority-jobqueue<a href="#91android-priority-jobqueue" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款提供后台任务管理能力的框架</span></p>
<p><span style="font-size: 15px">上榜理由：如果你是个志在深入研究多线程操作的开发者，这个项目一定不要错过，不论是Activity重新加载、Service使用线程池时的任务优先级和并发问题，都不要担心，Job Manage会照顾优先级，持久性，负载平衡，延迟，网络控制，分组，2.4K个star，优秀的多线程管理能力，况且它依赖的第三方框架很少，值得你一试</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/yigit/android-priority-jobqueue">https://github.com/yigit/android-priority-jobqueue</a></span></p>
<p><span style="font-size: 15px">作者：Yigit Boyar</span></p>
<h2 id="92android-debug-database"><a href="#92-Android-Debug-Database" class="headerlink" title="92.Android-Debug-Database"></a>92.Android-Debug-Database<a href="#92android-debug-database" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款提供测试App内部数据库能力的框架</span></p>
<p><span style="font-size: 15px">上榜理由：榜单里第二款针对<strong>调试数据库</strong>的框架，一行代码集成，直接在浏览器增删改查App的数据库，2.3k个star，心动不如行动！</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/amitshekhariitbhu/Android-Debug-Database">https://github.com/amitshekhariitbhu/Android-Debug-Database</a></span></p>
<p><span style="font-size: 15px">作者：AMIT SHEKHAR</span></p>
<p><span style="font-size: 15px">使用</span>：</p>
<div class="cnblogs_code">

<pre>debugCompile <span style="color: #800000">'</span><span style="color: #800000">com.amitshekhar.android:debug-db:1.0.0</span><span style="color: #800000">'</span></pre>

</div>

<p><span style="font-size: 15px">浏览器键入</span></p>
<div class="cnblogs_code">

<pre> http:<span style="color: #008000">//</span><span style="color: #008000">XXX.XXX.X.XXX:8080</span></pre>

</div>

<h2 id="93conceal"><a href="#93-conceal" class="headerlink" title="93.conceal"></a>93.conceal<a href="#93conceal" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款facebook提供的加密本地大文件的框架</span></p>
<p><span style="font-size: 15px">上榜理由：如果还在担心App内的图片的隐私问题，这款facebook提供的文件加密框架足以解决你的问题，facebook客户端的图片和数据都是使用conceal加密的</span></p>
<p><span style="font-size: 15px">官网地址：<a target="_blank" rel="noopener" href="http://facebook.github.io/conceal/">http://facebook.github.io/conceal/</a></span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/facebook/conceal">https://github.com/facebook/conceal</a></span></p>
<p><span style="font-size: 15px">作者;facebook</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<p><span style="font-size: 15px">clone项目到本地/官网下载jar</span></p>
<h2 id="94arouter"><a href="#94-ARouter" class="headerlink" title="94.ARouter"></a>94.ARouter<a href="#94arouter" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款提供服务、页面跳转路由的框架</span></p>
<p><span style="font-size: 15px">上榜理由：正如作者宣称的那样，该框架提供：从外部URL映射到内部页面、跨模块的页面跳转（页面解耦）、拦截跳转过程等能力，还有更多功能等你去发掘，2.1K个star，值得为企业级的框架喝彩</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/alibaba/ARouter">https://github.com/alibaba/ARouter</a></span></p>
<p><span style="font-size: 15px">作者：alibaba </span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre><span style="color: #000000">ndroid {
    defaultConfig {
    ...
    javaCompileOptions {
        annotationProcessorOptions {
        arguments</span> = <span style="color: #000000">[ moduleName : project.getName() ]
        }
    }
    }
}

dependencies {</span> <span style="color: #008000">//</span> <span style="color: #008000">替换成最新版本, 需要注意的是api</span> <span style="color: #008000">//</span> <span style="color: #008000">要与compiler匹配使用，均使用最新版可以保证兼容</span>
    compile <span style="color: #800000">'</span><span style="color: #800000">com.alibaba:arouter-api:x.x.x</span><span style="color: #800000">'</span> <span style="color: #000000">annotationProcessor</span> <span style="color: #800000">'</span><span style="color: #800000">com.alibaba:arouter-compiler:x.x.x</span><span style="color: #800000">'</span> <span style="color: #000000">...
}</span> <span style="color: #008000">//</span> <span style="color: #008000">旧版本gradle插件(< 2.2)，可以使用apt插件，配置方法见文末'其他#4'</span> <span style="color: #008000">//</span> <span style="color: #008000">Kotlin配置参考文末'其他#5'</span></pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<h2 id="95magicasakura"><a href="#95-MagicaSakura" class="headerlink" title="95.MagicaSakura"></a>95.MagicaSakura<a href="#95magicasakura" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款提供多主题切换能力的框架</span></p>
<p><span style="font-size: 15px">上榜理由：框架所提供的能力，一直是本榜单所看重的，这款由bilibili提供的多主题框架，作为榜单所涉及范围能补充，1.9个star，感谢bilibili团队所作出的贡献！</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/Bilibili/MagicaSakura">https://github.com/Bilibili/MagicaSakura</a></span></p>
<p><span style="font-size: 15px">作者:Bilibili</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre>compile <span style="color: #800000">'</span><span style="color: #800000">com.bilibili:magicasakura:0.1.6@aar</span><span style="color: #800000">'</span></pre>

</div>

<h2 id="96customactivityoncrash"><a href="#96-CustomActivityOnCrash" class="headerlink" title="96.CustomActivityOnCrash"></a>96.CustomActivityOnCrash<a href="#96customactivityoncrash" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款当APP crash的时候自动载入某个Activity的框架（而不是显示Unfortunately, X has stopped）</span></p>
<p><span style="font-size: 15px">上榜理由：新奇的创意是榜单所需要的，所以它赢得了1.8K个star；作为开发者应该拥有考虑到各种潜伏的bug的能力，但我们不能总是面面俱到，其他系统端的同事也可能造成程序的意外crash，因此，如何让程序优雅的crash-&gt;重启值得我们思考，这款框架就提供了这种能力</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/Ereza/CustomActivityOnCrash">https://github.com/Ereza/CustomActivityOnCrash</a></span></p>
<p><span style="font-size: 15px">作者：Eduard Ereza Martínez</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre><span style="color: #000000">dependencies {
    compile</span> <span style="color: #800000">'</span><span style="color: #800000">cat.ereza:customactivityoncrash:2.1.0</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

</div>

<div class="highlight-wrap"autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" contenteditable="true"data-rel="PLAIN"><figure class="iseeu highlight /plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">添加到 Application class:</span><br></pre></td></tr></table></figure></div>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre> <span style="color: #000000">@Override</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> <span style="color: #000000">onCreate() {
    super.onCreate();

    CaocConfig.Builder.create()
        .backgroundMode(CaocConfig.BACKGROUND_MODE_SILENT)</span>
        .enabled(<span style="color: #0000ff">false</span>) <span style="color: #008000">//</span><span style="color: #008000">default: true</span>
        .showErrorDetails(<span style="color: #0000ff">false</span>) <span style="color: #008000">//</span><span style="color: #008000">default: true</span>
        .showRestartButton(<span style="color: #0000ff">false</span>) <span style="color: #008000">//</span><span style="color: #008000">default: true</span>
        .trackActivities(<span style="color: #0000ff">true</span>) <span style="color: #008000">//</span><span style="color: #008000">default: false</span>
        .minTimeBetweenCrashesMs(<span style="color: #800080">2000</span>) <span style="color: #008000">//</span><span style="color: #008000">default: 3000</span>
        .errorDrawable(R.drawable.ic_custom_drawable) <span style="color: #008000">//</span><span style="color: #008000">default: bug image</span>
        .restartActivity(YourCustomActivity.<span style="color: #0000ff">class</span>) <span style="color: #008000">//</span><span style="color: #008000">default: null (your app's launch activity)</span>
        .errorActivity(YourCustomErrorActivity.<span style="color: #0000ff">class</span>) <span style="color: #008000">//</span><span style="color: #008000">default: null (default error activity)</span>
        .eventListener(<span style="color: #0000ff">new</span> YourCustomEventListener()) <span style="color: #008000">//</span><span style="color: #008000">default: null</span>
 <span style="color: #000000">.apply();
}</span></pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<h2 id="97xhsemoticonskeyboard"><a href="#97-XhsEmoticonsKeyboard" class="headerlink" title="97.XhsEmoticonsKeyboard"></a>97.XhsEmoticonsKeyboard<a href="#97xhsemoticonskeyboard" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：最开心的开源表情解决方案</span></p>
<p><span style="font-size: 15px">上榜理由：如果你还在发愁如何为你的APP自制键盘，那么此框架非常适合你，而且还提供表情包展示能力，1.7个star证明了它的独特。此外作者还附赠了高仿微信键盘，QQ键盘的demo，分享给诸位</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/w446108264/XhsEmoticonsKeyboard">https://github.com/w446108264/XhsEmoticonsKeyboard</a></span></p>
<p><span style="font-size: 15px">作者：zhongdaxia</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre><span style="color: #000000">allprojects {
    repositories {
        jcenter()
        maven { url</span> <span style="color: #800000">"</span><span style="color: #800000">https://jitpack.io</span><span style="color: #800000">"</span> <span style="color: #000000">}
    }
}

dependencies {
    compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.github.w446108264:XhsEmoticonsKeyboard:2.0.4</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>


<h2 id="98android-debug-database"><a href="#98-Android-Debug-Database" class="headerlink" title="98.Android Debug Database"></a>98.Android Debug Database<a href="#98android-debug-database" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：最简洁的数据库调试框架</span></p>
<p>span style=”font-size: 15px”&gt;上榜理由：调试数据库，是诸位日常工作中必不可少的环节，与榜单里出现过facebook的stetho，Android Debug Database最大的优势是简洁：集成简洁明了，观察、操作数据库简洁明了，还有一个不得不得推荐它的理由！stetho在数据表字段数超过50的时候阅读性非常差，今天推荐的这款，在UI界面上毫无疑问有着巨大的优势！</p>
<p>span style=”font-size: 15px”&gt;github [<a target="_blank" rel="noopener" href="https://github.com/amitshekhariitbhu/Android-Debug-Database(https://github.com/amitshekhariitbhu/Android-Debug-Database)">https://github.com/amitshekhariitbhu/Android-Debug-Database(https://github.com/amitshekhariitbhu/Android-Debug-Database)</a></p>
<p><span style="font-size: 15px">作者：AMIT SHEKHAR</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">


<pre><span style="color: #000000">

build.gradle：

debugImplementation 'com.amitshekhar.android:debug-db:1.0.3'

//配置端口

 debug {
            debuggable true
            resValue("string", "PORT_NUMBER", "9081")
    }


adb forward tcp:9081 tcp:9081


查看Logcat的ip日志：D/DebugDB: Open http://XXX.XXX.X.XXX:8080 in your browser

boomb！

</span></pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<h1 id="三完整项目"><a href="#三-完整项目" class="headerlink" title="三.完整项目"></a>三.完整项目<a href="#三完整项目" class="header-anchor">#</a></h1><h2 id="1iosche"><a href="#1-iosche" class="headerlink" title="1.iosche"></a>1.iosche<a href="#1iosche" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：谷歌2016开发者大会的展示项目</span></p>
<p><span style="font-size: 15px">上榜理由：github上有13.4k个star，位居企业级项目排行榜第一位，牛逼的开发者，权威的设计模式，标准的项目写法，值得一试；笔者建议初学者down下源码，找到app入口，每个页面走一通，配合设计模式的概念加深理解。</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/google/iosched">https://github.com/google/iosched</a></span></p>
<p><span style="font-size: 15px">作者： Google</span></p>
<p><span style="font-size: 15px"> </span></p>
<h2 id="2plaid"><a href="#2-Plaid" class="headerlink" title="2.Plaid"></a>2.Plaid<a href="#2plaid" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：提供设计新闻和灵感的开源app</span></p>
<p><span style="font-size: 15px">上榜理由：标准的material design设计，新闻类app，github上9k的star量值得你摒弃市面上参差不齐的新闻app，快点下手研究它吧！</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/nickbutcher/plaid">https://github.com/nickbutcher/plaid</a></span></p>
<p><span style="font-size: 15px"> 作者： Nick Butcher</span></p>
<h2 id="3pockethub"><a href="#3-PocketHub" class="headerlink" title="3.PocketHub"></a>3.PocketHub<a href="#3pockethub" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：Github的Android版</span></p>
<p><span style="font-size: 15px">上榜理由：8.7K的star数量，Github的亲生儿子，开放的源码值得各位一探究竟</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/pockethub/PocketHub">https://github.com/pockethub/PocketHub</a></span></p>
<p><span style="font-size: 15px">作者:Fadil Sutomo</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<p><span style="font-size: 15px">down下所有源码</span></p>
<h2 id="4signal-android"><a href="#4-Signal-Android" class="headerlink" title="4.Signal Android"></a>4.Signal Android<a href="#4signal-android" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：Signal是一款安全通讯的短信类app，</span></p>
<p><span style="font-size: 15px">上榜理由：7.9K的star数量，工具类app的标签属性，让它在排行榜中独一无二，如果你对短信app有兴趣，可以深入探究一番</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/WhisperSystems/Signal-Android">https://github.com/WhisperSystems/Signal-Android</a></span></p>
<p><span style="font-size: 15px">作者：WhisperSystems</span></p>
<p><span style="font-size: 15px">使用：github上down源码</span></p>
<h2 id="5android-universalmusicplayer"><a href="#5-android-UniversalMusicPlayer" class="headerlink" title="5.android-UniversalMusicPlayer"></a>5.android-UniversalMusicPlayer<a href="#5android-universalmusicplayer" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款跨设备运行的多媒体app</span></p>
<p><span style="font-size: 15px">上榜理由：googlesamples良心推荐，github拥有7.9k个star，可以在Android手机，汽车，平板，穿戴设备上使用，对于仅仅体验过Android手机开发的程序员，会不会很新奇呢？你值得一试！</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/googlesamples/android-UniversalMusicPlayer">https://github.com/googlesamples/android-UniversalMusicPlayer</a></span></p>
<p><span style="font-size: 15px">作者：Google</span></p>
<p><span style="font-size: 15px">使用：github上down源码</span></p>
<h2 id="6homemirror"><a href="#6-HomeMirror" class="headerlink" title="6.HomeMirror"></a>6.HomeMirror<a href="#6homemirror" class="header-anchor">#</a></h2><p><span style="font-size: 15px"> 一句话介绍：如果你是个爱美的家伙那么你一定需要这面镜子！</span></p>
<p><span style="font-size: 15px">上榜理由：工具类App很难再github上有一席之地，除非它提供特别新奇的功能，比如HomeMirror，github上有用7599个star，仅仅因为它提供了镜子的功能。从现在起，Android 手机、pad，都将成为你旅游居家神器，值得拥有！</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/HannahMitt/HomeMirror">https://github.com/HannahMitt/HomeMirror</a></span></p>
<p><span style="font-size: 15px">作者：Hannah Mittens </span></p>
<p><span style="font-size: 15px">HomeMirror初体验：</span></p>
<p><img src="http://images2015.cnblogs.com/blog/1149134/201706/1149134-20170616104729165-546624366.png"></p>
<h2 id="7exoplayer"><a href="#7-ExoPlayer" class="headerlink" title="7.ExoPlayer"></a>7.ExoPlayer<a href="#7exoplayer" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款 替代Android原生MediaPlayer的媒体播放器</span></p>
<p><span style="font-size: 15px">上榜理由：也许是Google对自家MediaPlayer API不甚满意，所以诞生了ExoPlayer，ExoPlayer提供了强大的扩展API，使用它来制作多媒体播放器更快捷，更容易扩展，对多媒体播放器感兴趣的同仁们可以用它来大展身手了！6.9K个star，证明它有多受开发者们喜爱，更难能可贵的是，google还在更新维护着！</span></p>
<p><span style="font-size: 15px">官网地址：<a target="_blank" rel="noopener" href="https://google.github.io/ExoPlayer/">https://google.github.io/ExoPlayer/</a></span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/google/ExoPlayer">https://github.com/google/ExoPlayer</a></span></p>
<p><span style="font-size: 15px">作者：google</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre><span style="color: #000000">repositories {
    jcenter()
}
compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.google.android.exoplayer:exoplayer:r2.X.X</span><span style="color: #800000">'</span> <span style="color: #000000">compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.google.android.exoplayer:exoplayer-core:r2.X.X</span><span style="color: #800000">'</span> <span style="color: #000000">compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.google.android.exoplayer:exoplayer-dash:r2.X.X</span><span style="color: #800000">'</span> <span style="color: #000000">compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.google.android.exoplayer:exoplayer-ui:r2.X.X</span><span style="color: #800000">'</span></pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<h2 id="8cheesesquare"><a href="#8-cheesesquare" class="headerlink" title="8.cheesesquare"></a>8.cheesesquare<a href="#8cheesesquare" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：Android 材料设计的展示性项目</span></p>
<p><span style="font-size: 15px">上榜理由:作者被称为是Android Support Lib背后的男人，他写出的展示性项目，怎能不推荐上榜？材料设计已经炒了好几年了，但作为最权威的展示项目，你一定需要它，6.7个star证明了它是多么的受欢迎。</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/chrisbanes/cheesesquare">https://github.com/chrisbanes/cheesesquare</a></span></p>
<p><span style="font-size: 15px">作者：Chris Banes</span></p>
<h2 id="9danmakuflamemaster"><a href="#9-DanmakuFlameMaster" class="headerlink" title="9.DanmakuFlameMaster"></a>9.DanmakuFlameMaster<a href="#9danmakuflamemaster" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：android端开源弹幕引擎</span></p>
<p><span style="font-size: 15px">上榜理由：bilibili出品，保证了它的纯种品质，并且ndk源码也一并开源，可谓业界良心，该弹幕引擎的开源节省了很多视频直播小伙伴的开发成本，笔者强力推荐！</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/Bilibili/DanmakuFlameMaster">https://github.com/Bilibili/DanmakuFlameMaster</a></span></p>
<p><span style="font-size: 15px">作者：bilibili</span></p>
<p><span style="font-size: 15px">使用</span>：</p>
<div class="cnblogs_code">

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

<pre><span style="color: #000000">repositories {
    jcenter()
}

dependencies {
    compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.github.ctiao:DanmakuFlameMaster:0.8.3</span><span style="color: #800000">'</span> <span style="color: #000000">compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.github.ctiao:ndkbitmap-armv7a:0.8.3</span><span style="color: #800000">'</span> <span style="color: #000000"># Other ABIs: optional
    compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.github.ctiao:ndkbitmap-armv5:0.8.3</span><span style="color: #800000">'</span> <span style="color: #000000">compile</span> <span style="color: #800000">'</span><span style="color: #800000">com.github.ctiao:ndkbitmap-x86:0.8.3</span><span style="color: #800000">'</span> <span style="color: #000000">}</span></pre>

<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy">[![复制代码](//common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码")</span></div>

</div>

<h2 id="10facebook-android-sdk"><a href="#10-facebook-android-sdk" class="headerlink" title="10.facebook-android-sdk"></a>10.facebook-android-sdk<a href="#10facebook-android-sdk" class="header-anchor">#</a></h2><p><span class="pl-en" style="font-size: 15px"> 一句话介绍：一款提供<strong>接入facebook平台能力</strong>的框架</span></p>
<p><span style="font-size: 15px">上榜理由：无论是你有接入facebook的需求，还是有学习自制sdk的需求，这都是很棒的途径；如何开发一套企业级sdk，是进阶优秀开发工程师的必须之路，4.1k个star，facebook持久更新质量保证，你值得拥有！</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/facebook/facebook-android-sdk">https://github.com/facebook/facebook-android-sdk</a></span></p>
<p><span style="font-size: 15px">作者：facebook</span></p>
<p><span style="font-size: 15px">使用</span>：</p>
<div class="cnblogs_code">

<pre> https:<span style="color: #008000">//</span><span style="color: #008000">developers.facebook.com/docs/android</span></pre>

</div>

<h2 id="11android-oss"><a href="#11-android-oss" class="headerlink" title="11.android-oss"></a>11.android-oss<a href="#11android-oss" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：国外创意社区Kickstarter 开源的Android版客户端</span></p>
<p><span style="font-size: 15px">上榜理由：精致的企业级APP，每个页面处理得都很棒，如果你志在成为一个优雅工程师，这款开源项目一定适合你，3.8k个star证明了它不俗的生命力</span></p>
<p><span style="font-size: 15px">github：<a target="_blank" rel="noopener" href="https://github.com/kickstarter/android-oss">https://github.com/kickstarter/android-oss</a></span></p>
<p><span style="font-size: 15px">作者：kickstarter</span></p>
<p><span style="font-size: 15px">使用;</span></p>
<p><span style="font-size: 15px">clone源码到本地</span></p>
<h2 id="12k-9"><a href="#12-k-9" class="headerlink" title="12.k-9"></a>12.k-9<a href="#12k-9" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：Android端客户端邮件App</span></p>
<p><span style="font-size: 15px">上榜理由：还记得张小龙的成名作——FoxMail吗？如果你想做一款移动端Email App，k-9具有很好的借鉴价值，此外对于应用层协议你也会有更深的认识</span></p>
<p><span style="font-size: 15px">官网地址： <a target="_blank" rel="noopener" href="https://k9mail.github.io/">https://k9mail.github.io/</a></span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/k9mail/k-9">https://github.com/k9mail/k-9</a></span></p>
<p><span style="font-size: 15px">使用：</span></p>
<p><span style="font-size: 15px">clone项目到本地</span></p>
<h2 id="13timber"><a href="#13-Timber" class="headerlink" title="13.Timber"></a>13.Timber<a href="#13timber" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款音乐播放器类App</span></p>
<p><span style="font-size: 15px"> 上榜理由：3K个star，完全按照材料设计规范，提供十几种播放特性，而且还提供App的通用设置能力，这一点做的同样优秀，对于志在提升开发技术的同学值得一试</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/naman14/Timber">https://github.com/naman14/Timber</a></span></p>
<p><span style="font-size: 15px">作者：Naman Dwivedi</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<p><span style="font-size: 15px">clone源码是一个好习惯</span></p>
<h2 id="14remusic"><a href="#14-remusic" class="headerlink" title="14.remusic"></a>14.remusic<a href="#14remusic" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：仿网易云音乐Android版App</span></p>
<p><span style="font-size: 15px">上榜理由：学习完Timer，是否还不太满足你的胃口？remusic可以满足你的胃口——它甚至可以拿去直接当上线项目了！2.9K个star，基于Timber的设计（入手的前提是先搞懂Timber）值得入手；有一个问题：如果由你重构，你会如何做呢？</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/aa112901/remusic">https://github.com/aa112901/remusic</a></span></p>
<p><span style="font-size: 15px">作者：MW</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<p><span style="font-size: 15px">clone项目</span></p>
<h2 id="15douya"><a href="#15-Douya" class="headerlink" title="15.Douya"></a>15.Douya<a href="#15douya" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：开源豆瓣客户端</span></p>
<p><span style="font-size: 15px">上榜理由：一款功能全面、架构设计不俗的开源APP；仅仅是对豆瓣APP设计思路不满而进行的重构项目，可见作者对产品的痴迷和热爱，2.9K个star，证明该项目并不是头脑发热一时兴起的作品，如果每一个idea都能实现，那我们的世界将会多么美妙！</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/DreaminginCodeZH/Douya">https://github.com/DreaminginCodeZH/Douya</a></span></p>
<p><span style="font-size: 15px">作者：Zhang Hai</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<p><span style="font-size: 15px">clone项目到本地</span></p>
<h2 id="16bookreader"><a href="#16-BookReader" class="headerlink" title="16.BookReader"></a>16.BookReader<a href="#16bookreader" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：开源小说阅读器</span></p>
<p><span style="font-size: 15px">上榜理由：2.7K个star，榜单里第一款阅读器APP，具有很高的学习价值（针对有兴趣往阅读工具类方向发展的同学）</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/JustWayward/BookReader">https://github.com/JustWayward/BookReader</a></span></p>
<p><span style="font-size: 15px">作者：JustWayward 团队</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<p><span style="font-size: 15px">clone到本地 </span></p>
<h2 id="17bilibili-android-client"><a href="#17-bilibili-android-client" class="headerlink" title="17.bilibili-android-client"></a>17.bilibili-android-client<a href="#17bilibili-android-client" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍:高仿bilibili的Android客户端</span></p>
<p><span style="font-size: 15px">上榜理由：2.5K个star，榜单里第一款视频直播开源App；适合对视频直播、社区互动感兴趣的同学；bilibili-android-client里使用了很多大型框架，此项目并不适合基础薄弱的同学，不要灰心，学习页面的布局设计也是值得的！</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/HotBitmapGG/bilibili-android-client">https://github.com/HotBitmapGG/bilibili-android-client</a></span></p>
<p><span style="font-size: 15px">作者：Hcc</span></p>
<p><span style="font-size: 15px">使用：clone到本地</span></p>
<h2 id="18androidchromium"><a href="#18-AndroidChromium" class="headerlink" title="18.AndroidChromium"></a>18.AndroidChromium<a href="#18androidchromium" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：Android版chrome浏览器</span></p>
<p><span style="font-size: 15px">上榜理由：正如作者宣称的那样:</span></p>
<ul>
<li>  <span style="font-size: 15px">谷歌浏览器安卓版源码项目</span></li>
<li>  <span style="font-size: 15px">世界级的安卓架构</span></li>
<li>  <span style="font-size: 15px">理清本项目业务逻辑完全可以胜任国内一线公司工程师</span></li>
</ul>
<p><span style="font-size: 15px">　　对于志在梳理浏览器框架的你，值得拥有</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/JackyAndroid/AndroidChromium">https://github.com/JackyAndroid/AndroidChromium</a></span></p>
<p><span style="font-size: 15px">作者：JackYAndroid</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<p><span style="font-size: 15px">clone源码到本地</span></p>
<h1 id="四开发框架"><a href="#四-开发框架：" class="headerlink" title="四.开发框架："></a>四.开发框架：<a href="#四开发框架" class="header-anchor">#</a></h1><h1 id="排名无先后-只按类型划分"><a href="#（排名无先后、只按类型划分）" class="headerlink" title="（排名无先后、只按类型划分）"></a><span style="font-size: 16px">（排名无先后、只按类型划分）</span><a href="#排名无先后-只按类型划分" class="header-anchor">#</a></h1><h2 id="1libgdxhttpsgithubcomlibgdxlibgdx"><a href="#1-libgdx-https-github-com-libgdx-libgdx" class="headerlink" title="1.libgdx(https://github.com/libgdx/libgdx)"></a>1.libgdx(<a target="_blank" rel="noopener" href="https://github.com/libgdx/libgdx">https://github.com/libgdx/libgdx</a>)<a href="#1libgdxhttpsgithubcomlibgdxlibgdx" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款跨平台的android端游戏开发框架</span></p>
<p><span style="font-size: 15px">上榜理由：android端开发框架类第一名，11.7K的star量，游戏框架是它的专属标签，更重要的是它是跨平台的</span></p>
<p><span style="font-size: 15px">官网地址  <a target="_blank" rel="noopener" href="http://libgdx.badlogicgames.com/">http://libgdx.badlogicgames.com/</a></span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/libgdx/libgdx">https://github.com/libgdx/libgdx</a></span></p>
<h2 id="2xutils"><a href="#2-xUtils" class="headerlink" title="2.xUtils"></a>2.xUtils<a href="#2xutils" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：老牌企业级开发框架</span></p>
<p><span style="font-size: 15px">上榜理由：4.9K个star，xUtils作为上古时期程序员备受推崇的开发框架，最大的原因——省事。xUtls包含四大模块，与之而来的是提供四大操作能力：数据操作、UI操作、Http协议操作、图片操作。xUtils作为笔者初学Android框架设计的导师型项目，在笔者多年经验中，看到xUtils作为众多中小银行Android端框架方案首选，足以证明它的受欢迎程度。该框架现在已经更新到了xUtils3，如果你对Android框架涉及有一定的想法，可以从xUtils入手，进阶为框架大师行列。虽然框架中很多引擎已经过时，各个模块的做法都可以用其他框架替代，但xUtils作为国内开发者的骄傲，上古时期的框架宠儿，值得你拥有！</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/wyouflf/xUtils">https://github.com/wyouflf/xUtils</a></span></p>
<p><span style="font-size: 15px">作者：wyouflf</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<div class="cnblogs_code">

<pre>compile <span style="color: #800000">'</span><span style="color: #800000">org.xutils:xutils:3.5.0</span><span style="color: #800000">'</span></pre>

</div>

<h2 id="3android-common"><a href="#3-android-common" class="headerlink" title="3.android-common"></a>3.android-common<a href="#3android-common" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍： 一款android快速开发框架</span></p>
<p><span style="font-size: 15px">上榜理由：滴滴资深级Android工程师出品，历经多年开发者的检验，以4.3K屹立于快速开发框架榜第三名，该框架提供了图片缓存、Http缓存、DropDownListView、下载模块、开发常用工具类等，作为上古时期程序员最早的<strong>总结性开发框架</strong>，它是一代人智慧的结晶，值得我们为作者Trinea鼓掌喝彩</span></p>
<p><span style="font-size: 15px">github  <a target="_blank" rel="noopener" href="https://github.com/Trinea/android-common">https://github.com/Trinea/android-common</a></span></p>
<p><span style="font-size: 15px">作者：Trinea</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<p>clone代码到本地</p>
<h2 id="4vitamio"><a href="#4-Vitamio" class="headerlink" title="4.Vitamio"></a>4.Vitamio<a href="#4vitamio" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：一款支持跨平台的Android多媒体开发框架</span></p>
<p><span style="font-size: 15px">上榜理由：如果之前提到的exoplayer不能满足你开发多媒体的需求，那我保证vitamio值得你一试</span></p>
<p><span style="font-size: 15px">官网地址：<a target="_blank" rel="noopener" href="https://www.vitamio.org/">https://www.vitamio.org/</a></span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/yixia/VitamioBundle">https://github.com/yixia/VitamioBundle</a></span></p>
<p><span style="font-size: 15px">作者：yixia团队</span></p>
<p><span style="font-size: 15px">使用：</span></p>
<p><span style="font-size: 15px">clone源码到本地</span></p>
<p><span style="font-size: 15px"> </span></p>
<h2 id="5weex"><a href="#5-Weex" class="headerlink" title="5.Weex"></a>5.Weex<a href="#5weex" class="header-anchor">#</a></h2><p>一句话介绍：移动端跨平台开发的解决方案</p>
<p>上榜理由：14.4K个star，有成熟应用案例的企业级混合开发框架，阿里巴巴出品，为什么不试试呢？</p>
<p>官网地址：<a target="_blank" rel="noopener" href="https://weex.apache.org/cn/">https://weex.apache.org/cn/</a></p>
<p>github  <a target="_blank" rel="noopener" href="https://github.com/alibaba/weex">https://github.com/alibaba/weex</a></p>
<p>作者：alibaba</p>
<h2 id="6cordova-androidhybrid-开发框架-webapp开发框架"><a href="#6-cordova-android（Hybrid-开发框架、WebApp开发框架）" class="headerlink" title="6.cordova-android（Hybrid 开发框架、WebApp开发框架）"></a>6.cordova-android（Hybrid 开发框架、WebApp开发框架）<a href="#6cordova-androidhybrid-开发框架-webapp开发框架" class="header-anchor">#</a></h2><p>一句话介绍：跨平台的开发框架</p>
<p>上榜理由：cordova有足够的能力完成混合开发、WebApp开发的需求：不论你是Web开发者，或者是Native开发者，使用cordova都可以作出跨平台的App</p>
<p>官网地址：<a target="_blank" rel="noopener" href="http://cordova.axuer.com/docs/zh-cn/latest/guide/overview/index.html">http://cordova.axuer.com/docs/zh-cn/latest/guide/overview/index.html</a></p>
<p>github <a target="_blank" rel="noopener" href="https://github.com/apache/cordova-android">https://github.com/apache/cordova-android</a></p>
<h2 id="7react-native"><a href="#7-react-native" class="headerlink" title="7.react-native"></a>7.react-native<a href="#7react-native" class="header-anchor">#</a></h2><p>一句话介绍：一款以Javascript的语言来操作多个系统语言（Ios、Android）的框架</p>
<p>上榜理由：很难讲react-native属于什么类别，它适合前端工程师开发移动端App，也适合Native开发者进行跨平台的开发，但对于Navitve开发者来说陡峭的学习曲线会吓走一大批“框架爱好者”；前端界有一句名言：Web代表着未来，Native代表着现在，而我们处在现在与未来的道路上；49K个star，似乎让我们离未来更进一步</p>
<p>官网地址： <a target="_blank" rel="noopener" href="http://facebook.github.io/react-native/docs/getting-started.html">http://facebook.github.io/react-native/docs/getting-started.html</a></p>
<p>github  <a target="_blank" rel="noopener" href="https://github.com/facebook/react-native">https://github.com/facebook/react-native</a></p>
<p>作者：facebook</p>
<h1 id="五其他"><a href="#五-其他：" class="headerlink" title="五.其他："></a>五.其他：<a href="#五其他" class="header-anchor">#</a></h1><h2 id="1androidutilcode"><a href="#1-AndroidUtilCode" class="headerlink" title="1.AndroidUtilCode"></a>1.AndroidUtilCode<a href="#1androidutilcode" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：提供了数量庞大的工具类</span></p>
<p><span style="font-size: 15px">上榜理由：10.8K的star个数，足以证明它是多么受欢迎，欢迎你提供常用的工具类壮大它！</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/Blankj/AndroidUtilCode/blob/master/README-CN.md">https://github.com/Blankj/AndroidUtilCode/blob/master/README-CN.md</a></span></p>
<blockquote>
<p>File → Settings… → Plugins → Browse repositories…</p>
</blockquote>
<p>and search for <code>freeline</code>.</p>
<h2 id="2kotiln"><a href="#2-kotiln" class="headerlink" title="2.kotiln"></a><span>2.kotiln</span><a href="#2kotiln" class="header-anchor">#</a></h2><p>一句话介绍：Google推出的Android编程语言</p>
<p>上榜理由：就像AndroidStudio取代Eclipse那样，Google将kotiln作为Android的官方编程语言，也许此举是为了避免同Oracle的专利诉讼，但kotlin 100%兼容java，大幅精简java代码量，以及函数式编程的思想这些优异的特性同意值得我们注意，还记得在榜单之前说过的吗？未来是kotlin的，当下是java的，但我们处在当下通往未来的道路上——学习未来的编程语言，提升自己的工作效率，早点下班打豆豆，何乐而不为？</p>
<p>官网地址：<a target="_blank" rel="noopener" href="http://kotlinlang.org/">http://kotlinlang.org/</a></p>
<p>github：<a target="_blank" rel="noopener" href="https://github.com/JetBrains/kotlin">https://github.com/JetBrains/kotlin</a></p>
<p> 使用：</p>
<p><a target="_blank" rel="noopener" href="http://kotlinlang.org/docs/reference/%20">http://kotlinlang.org/docs/reference/</a>   提供了 api-android用例-书籍等资源</p>
<h1 id="六书籍类项目"><a href="#六-书籍类项目" class="headerlink" title="六.书籍类项目"></a>六.书籍类项目<a href="#六书籍类项目" class="header-anchor">#</a></h1><h1 id="排序无先后"><a href="#（排序无先后）" class="headerlink" title="（排序无先后）"></a><span style="font-size: 16px">（排序无先后）</span><a href="#排序无先后" class="header-anchor">#</a></h1><h2 id="1android-developer中国官网培训课程"><a href="#1-Android-developer中国官网培训课程" class="headerlink" title="1.Android developer中国官网培训课程"></a>1.Android developer中国官网培训课程<a href="#1android-developer中国官网培训课程" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：符合中国国情的Google开发者官网的子产品——Android开发者官网</span></p>
<p><span style="font-size: 15px">上榜理由：这里有培训课程、API用例课程、Sample用例、依赖库介绍、AndroidStudio官网…等等一系列公开免费的课程，尽管大部分内容还是英文讲解，可是你肯靠着英语词典一篇一篇啃完，相信我，你的Android知识水平将秒杀国内市面上大部分的Android书籍</span></p>
<p><span style="font-size: 15px">官网地址：<a target="_blank" rel="noopener" href="https://developer.android.google.cn/training/index.html">https://developer.android.google.cn/training/index.html</a></span></p>
<p><span style="font-size: 15px">作者：google</span></p>
<h2 id="2android-architecture"><a href="#2-android-architecture" class="headerlink" title="2.android-architecture"></a>2.android-architecture<a href="#2android-architecture" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：google提供的Android当下各种基本框架</span></p>
<p><span style="font-size: 15px">上榜理由：看完它，mvp，mvvm都将入切瓜砍菜，秋风扫落叶一般…</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/googlesamples/android-architecture">https://github.com/googlesamples/android-architecture</a></span></p>
<p><span style="font-size: 15px">作者：google</span></p>
<h2 id="3andorid-open-project"><a href="#3-andorid-open-project" class="headerlink" title="3.andorid-open-project"></a>3.andorid-open-project<a href="#3andorid-open-project" class="header-anchor">#</a></h2><p><span style="font-size: 15px">一句话介绍：囊括Android几乎所有的开源项目的导航类目录</span></p>
<p><span style="font-size: 15px">上榜理由：23k个star的导航类目录，与其盛名不符的是，该项目的导航、浏览阅读体验做的非常差，建议消遣之余阅读；推荐理由——中国人做的最全的Android 开源项目导航目录</span></p>
<p><span style="font-size: 15px">github <a target="_blank" rel="noopener" href="https://github.com/Trinea/android-open-project">https://github.com/Trinea/android-open-project</a></span></p>
<p><span style="font-size: 15px">作者：Trinea</span></p>
<h2 id="4awesome-android-ui"><a href="#4-awesome-android-ui" class="headerlink" title="4.awesome-android-ui"></a>4.awesome-android-ui<a href="#4awesome-android-ui" class="header-anchor">#</a></h2><p>一句话介绍：Android的开源项目目录</p>
<p>上榜理由：国外的一款导航目录，23k个star</p>
<p>github  <a target="_blank" rel="noopener" href="https://github.com/wasabeef/awesome-android-ui">https://github.com/wasabeef/awesome-android-ui</a></p>
<h1 id="笔者寄语"><a href="#笔者寄语" class="headerlink" title="笔者寄语:"></a>笔者寄语:<a href="#笔者寄语" class="header-anchor">#</a></h1><p><span style="font-size: 15px">今年我们的权威框架之旅就结束了，是否感觉到意犹未尽？那太好了，欢迎各位读者加入《Android百大框架排行榜》的讨论之中，可以来<a target="_blank" rel="noopener" href="http://www.cnblogs.com/jincheng-yangchaofan/articles/7018780.html" title="Permalink to 2017年Android百大框架排行榜 - 杨超凡_金诚先生 - 博客园">原文链接</a>评论留言，也可以参与维护此项目：</span></p>
<p><span style="font-size: 15px">1.我认为XX框架应该上榜，理由XX</span></p>
<p><span style="font-size: 15px">2.我发现文章有几处错误，在XX部分</span></p>
<p><span style="font-size: 15px">3.对于笔者的某些观点我不能苟同，比如XX，我认为XX</span></p>
<p>…</p>
<p><span style="font-size: 15px">笔者希望收到<strong>有理有据</strong>的评论和未上榜的<strong>框架推荐</strong>，届时笔者会抽取一部分参与评论的小伙伴将，发放共计100RMB的物质奖励！</span></p>
<p>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　 　　　　　                                            2017-10-25   北京</p>

<link rel="stylesheet" href="/css/bilicard.css" type="text/css">

        

      
    </div>

      <!-- 相关文章推荐 -->
     
          

  <div class="popular-posts-header">
    <i class="fa fa-graduation-cap"></i>
    相关文章
  </div>

 <details>
   <summary>点击查看</summary>
     <ul class="popular-posts">
     
       <li class="popular-posts-item">
         
         
         <div class="popular-posts-title"><a href="\blog\2021\01\Android-plug-in-technology-selection\" rel="bookmark">Android插件化技术选型</a></div>
         
       </li>
     
       <li class="popular-posts-item">
         
         
         <div class="popular-posts-title"><a href="\blog\2021\01\Android-component-Practice-Guide\" rel="bookmark">Android组件化实践指南</a></div>
         
       </li>
     
       <li class="popular-posts-item">
         
         
         <div class="popular-posts-title"><a href="\blog\2021\01\android-structure-best-practice\" rel="bookmark">Android大厂架构设计最佳实践</a></div>
         
       </li>
     
       <li class="popular-posts-item">
         
         
         <div class="popular-posts-title"><a href="\blog\2021\05\The-most-comprehensive-thinking-of-crash-practice-strategy\" rel="bookmark">Android Crash实践策略最全面思考</a></div>
         
       </li>
     
       <li class="popular-posts-item">
         
         
         <div class="popular-posts-title"><a href="\blog\2021\05\android-crash-who-kill-you\" rel="bookmark">Android Crash揭秘与实践</a></div>
         
       </li>
     
       <li class="popular-posts-item">
         
         
         <div class="popular-posts-title"><a href="\blog\2021\02\mtk-log\" rel="bookmark">mtk-log</a></div>
         
       </li>
     
       <li class="popular-posts-item">
         
         
         <div class="popular-posts-title"><a href="\blog\2021\02\android-bugfree-three-lines\" rel="bookmark">BugFree三剑客异常、日志、工具</a></div>
         
       </li>
     
       <li class="popular-posts-item">
         
         
         <div class="popular-posts-title"><a href="\blog\2021\02\Client-Skeleton-Screen\" rel="bookmark">Android骨架屏详解</a></div>
         
       </li>
     
       <li class="popular-posts-item">
         
         
         <div class="popular-posts-title"><a href="\blog\2020\08\handler TOP 100 Questions\" rel="bookmark">AndroidHandler百问百答</a></div>
         
       </li>
     
       <li class="popular-posts-item">
         
         
         <div class="popular-posts-title"><a href="\blog\2018\02\MVC-MVP-MVVM -of -architecture -selection\" rel="bookmark">架构选型之MVC、MVP、MVVM</a></div>
         
       </li>
     
     </ul>
 </details>



     

    
    
    

    <div>
          
            

          
    </div>

    

    <div>
      
        <div>
    
        <div class="read-over">-------------------本文结束 <i class="fa fa-paw"></i> 感谢您的阅读-------------------</div>
    
</div>

      
    </div>

    
      <div>
        <div class="share_reward">
  <div>坚持原创技术分享，感谢您的支持和鼓励！</div>
  <button id="rewardButton" disable="enable" onclick="var qr = document.getElementById('QR'); if (qr.style.display === 'none') {qr.style.display='block';} else {qr.style.display='none'}">
    <span>打赏</span>
  </button>
  <div id="QR" style="display: none;">

    
      <div id="wechat" style="display: inline-block">
        <img id="wechat_qr" src="http://cdn.yangchaofan.cn/BlogGifRes/20210313/s7mteFUqc8pH.png" alt=" 微信支付"/>
        <p>微信支付</p>
      </div>
    

    
      <div id="alipay" style="display: inline-block">
        <img id="alipay_qr" src="http://cdn.yangchaofan.cn/BlogGifRes/20210313/oQnokBcx6RUO.png" alt=" 支付宝"/>
        <p>支付宝</p>
      </div>
    

    

  </div>
</div>

      </div>
    

    
      <div>
        <ul class="post-copyright">
  <li class="post-copyright-author">
    <strong>本文作者：</strong>
    叶金诚
  </li>
  <li class="post-copyright-link">
    <strong>本文链接：</strong>
    <a href="http://idolcoder.gitee.io/blog/2016/04/Android-TOP-100-Program/" title="Android 百大框架排行榜">http://idolcoder.gitee.io/blog/2016/04/Android-TOP-100-Program/</a>
  </li>
  <li class="post-copyright-license">
    <strong>版权声明： </strong>
    本博客所有文章除特别声明外，均采用 <a href="https://creativecommons.org/licenses/by-nc-nd/3.0/deed.zh" rel="external nofollow" target="_blank">Creative Commons BY-NC-ND 3.0</a> 许可协议。转载请注明出处！
  </li>
</ul>

      </div>
    

    <footer class="post-footer">
      
        <div class="post-tags">
          
            <a href="/blog/tags/Android/" rel="tag"> <i class="fa fa-tag"></i> Android</a>
          
            <a href="/blog/tags/%E5%BC%80%E6%BA%90%E6%A1%86%E6%9E%B6/" rel="tag"> <i class="fa fa-tag"></i> 开源框架</a>
          
        </div>
      

      
      
        <div class="post-widgets">
        

        

        
          
          <div id="needsharebutton-postbottom">
            <span class="btn">
              <i class="fa fa-share-alt" aria-hidden="true"></i>
            </span>
          </div>
        
        </div>
      
      

      
        <div class="post-nav">
          <div class="post-nav-next post-nav-item">
            
              <a href="/blog/2016/06/performance-android/" rel="prev" title="Android性能优化【史诗巨著之内存篇】">
                <i class="fa fa-chevron-left"></i> Android性能优化【史诗巨著之内存篇】
              </a>
            
          </div>

          <span class="post-nav-divider"></span>

          <div class="post-nav-prev post-nav-item">
            
              <a href="/blog/2015/08/learing-plan/" rel="next" title="2015-2021学习计划">
                2015-2021学习计划 <i class="fa fa-chevron-right"></i>
              </a>
            
          </div>
        </div>
      

      
      
    </footer>
  </div>
  
  
  
  </article>



    <div class="post-spread">
      
        
  <script>
    window._bd_share_config = {
      "common": {
        "bdText": "",
        "bdMini": "1",
        "bdMiniList": false,
        "bdPic": ""
      },
      "image": {
        "viewList": ["tsina", "douban", "sqq", "qzone", "weixin", "twi", "fbook"],
        "viewText": "分享到：",
        "viewSize": "16"
      },
      "slide": {
        "bdImg": "5",
        "bdPos": "left",
        "bdTop": "100"
      }
    }
  </script>

<script>
//  with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='//bdimg.share.baidu.com/static/api/js/share.js?cdnversion='+~(-new Date()/36e5)];
//    with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='/static/api/js/share.js?cdnversion='+~(-new Date()/36e5)];
</script>

      
    </div>
  </div>


          </div>
          


          

  
    <div class="comments" id="comments">
      <div id="lv-container" data-id="city" data-uid="MTAyMC81Mjc2OC8yOTI0NQ"></div>
    </div>

  





        </div>
        
          
  
  <div class="sidebar-toggle">
    <div class="sidebar-toggle-line-wrap">
      <span class="sidebar-toggle-line sidebar-toggle-line-first"></span>
      <span class="sidebar-toggle-line sidebar-toggle-line-middle"></span>
      <span class="sidebar-toggle-line sidebar-toggle-line-last"></span>
    </div>
  </div>

  <aside id="sidebar" class="sidebar">
    
      <div id="sidebar-dimmer"></div>
    
    <div class="sidebar-inner">

      

      
        <ul class="sidebar-nav motion-element">
          <li class="sidebar-nav-toc sidebar-nav-active" data-target="post-toc-wrap">
            文章目录
          </li>
          <li class="sidebar-nav-overview" data-target="site-overview-wrap">
            站点概览
          </li>
        </ul>
      

      <section class="site-overview-wrap sidebar-panel">
        <div class="site-overview">
          <div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
            
              <a href="/">
              <img class="site-author-image" itemprop="image"
                src="/blog/images/head.png"
                alt="" />
              </a>
            
              <p class="site-author-name" itemprop="name"></p>
              <p class="site-description motion-element" itemprop="description"></p>
          </div>

          <nav class="site-state motion-element">

            
              <div class="site-state-item site-state-posts">
              
                <a href="/blog/archives/">
              
                  <span class="site-state-item-count">24</span>
                  <span class="site-state-item-name">文章</span>
                </a>
              </div>
            

            
              
              
              <div class="site-state-item site-state-categories">
                <a href="/blog/categories/index.html">
                  <span class="site-state-item-count">16</span>
                  <span class="site-state-item-name">分类</span>
                </a>
              </div>
            

            
              
              
              <div class="site-state-item site-state-tags">
                <a href="/blog/tags/index.html">
                  <span class="site-state-item-count">14</span>
                  <span class="site-state-item-name">标签</span>
                </a>
              </div>
            

          </nav>

          
            <div class="feed-link motion-element">
              <a href="/blog/atom.xml" rel="alternate">
                <i class="fa fa-rss"></i>
                RSS
              </a>
              <!-- 为Hexo Next主题添加哈林摇特效  -->
              <a title="收藏到书签，偶尔High一下^_^" rel="alternate" class="mw-harlem_shake_slow wobble shake" href="javascript:void(0)" onclick="javascript:(function go() {function c() {var e = document.createElement('link');e.setAttribute('type', 'text/css');e.setAttribute('rel', 'stylesheet');e.setAttribute('href', f);e.setAttribute('class', l);document.body.appendChild(e)}function h(){var e = document.getElementsByClassName(l);for(var t = 0; t< e.length; t++){document.body.removeChild(e[t])}}function p(){var e = document.createElement('div');e.setAttribute('class', a);document.body.appendChild(e);setTimeout(function(){document.body.removeChild(e)},100)}function d(e){return{height:e.offsetHeight,width:e.offsetWidth}}function v(i){var s = d(i);return s.height>e &amp;&amp;s.height<n &amp;&amp; s.width>t &amp;&amp;s.width<r}function m(e){var t=e;var n=0;while(!!t){n+=t.offsetTop;t=t.offsetParent}return n}function g(){var e=document.documentElement;if(!!window.innerWidth){return window.innerHeight}else if(e &amp;&amp; !isNaN(e.clientHeight)){return e.clientHeight}return 0}function y(){if(window.pageYOffset){return window.pageYOffset}return Math.max(document.documentElement.scrollTop,document.body.scrollTop)}function E(e){var t=m(e);return t>=w &amp;&amp; t<=b+w}var songs=['https://www.liaofuzhan.com/music/无尽光芒.mp3'];function S(){var e=document.getElementById('audio_element_id');if(e!=null){var index=parseInt(e.getAttribute('curSongIndex'));if(index>songs.length-2){index=0;}else{index++;}e.setAttribute('curSongIndex',index);N();}e.src=i;e.play()}function x(e){e.className+=' '+s+' '+o}function T(e){e.className+=' '+s+' '+u[Math.floor(Math.random()*u.length)]}function N(){var e=document.getElementsByClassName(s);var t=new RegExp('\\b'+s+'\\b');for(var n=0;n<e.length;){e[n].className=e[n].className.replace(t,'')}}function initAudioEle(){var e=document.getElementById('audio_element_id');if(e===null){e=document.createElement('audio');e.setAttribute('class',l);e.setAttribute('curSongIndex',0);e.id='audio_element_id';e.loop=false;e.bgcolor=0;e.addEventListener('canplay',function(){setTimeout(function(){x(k)},500);setTimeout(function(){N();p();for(var e=0;e<O.length;e++){T(O[e])}},15500)},true);e.addEventListener('ended',function(){N();h();go();},true);e.innerHTML='<p>If you are reading this,it is because your browser does not support the audio element. We recommend that you get a new browser.</p><p>';document.body.appendChild(e);}}initAudioEle();var e=30;var t=30;var n=350;var r=350;var curSongIndex=parseInt(document.getElementById('audio_element_id').getAttribute('curSongIndex'));var i=songs[curSongIndex];var s='mw-harlem_shake_me';var o='im_first';var u=['im_drunk','im_baked','im_trippin','im_blown'];var a='mw-strobe_light';var f='https://s3.amazonaws.com/moovweb-marketing/playground/harlem-shake-style.css';var l='mw_added_css';var b=g();var w=y();var C=document.getElementsByTagName('*');var k=null;for(var L=0;L<C.length;L++){var A=C[L];if(v(A)){if(E(A)){k=A;break}}}if(A===null){console.warn('Could not find a node of the right size. Please try a different page.');return}c();S();var O=[];for(var L=0;L<C.length;L++){var A=C[L];if(v(A)){O.push(A)}}})()"><i class="fa fa-music"></i> High~</a>

            </div>
          

          
            <div class="links-of-author motion-element">
                
                  <span class="links-of-author-item">
                    <a rel="external nofollow" href="https://github.com/ShaunSheep" target="_blank" title="GitHub">
                      
                        <i class="fa fa-fw fa-github"></i></a>
                  </span>
                
                  <span class="links-of-author-item">
                    <a rel="external nofollow" href="mailto:zuogewoniu@qq.com" target="_blank" title="E-Mail">
                      
                        <i class="fa fa-fw fa-envelope"></i></a>
                  </span>
                
                  <span class="links-of-author-item">
                    <a rel="external nofollow" href="https://www.douban.com/people/jincheng-ycf/" target="_blank" title="豆瓣">
                      
                        <i class="fa fa-fw fa-stack-overflow"></i></a>
                  </span>
                
                  <span class="links-of-author-item">
                    <a rel="external nofollow" href="https://www.zhihu.com/people/OscarWildeHawking" target="_blank" title="知乎">
                      
                        <i class="fa fa-fw fa-instagram"></i></a>
                  </span>
                
            </div>
          

            <!--
            <div id="music163player">
                <iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=330 height=86 src="//music.163.com/outchain/player?type=2&id=1336790004&auto=1&height=66"></iframe>
            </div>
            -->

          
          

          
          

          <!--近期文章版块 began-->
          
              <div class="links-of-blogroll motion-element links-of-blogroll-block">
                <div class="links-of-blogroll-title">
                  <i class="fa fa-history fa-" aria-hidden="true"></i>
                  近期文章
                </div>
                <ul class="links-of-blogroll-list">
                  
                  
                    <li class='my-links-of-blogroll-li'>
                      <a href="/blog/2021/05/The-most-comprehensive-thinking-of-crash-practice-strategy/" title="Android Crash实践策略最全面思考" target="_blank">Android Crash实践策略最全面思考</a>
                    </li>
                  
                    <li class='my-links-of-blogroll-li'>
                      <a href="/blog/2021/05/android-crash-who-kill-you/" title="Android Crash揭秘与实践" target="_blank">Android Crash揭秘与实践</a>
                    </li>
                  
                    <li class='my-links-of-blogroll-li'>
                      <a href="/blog/2021/04/Career-stability-experience/" title="职业稳定性杂谈" target="_blank">职业稳定性杂谈</a>
                    </li>
                  
                    <li class='my-links-of-blogroll-li'>
                      <a href="/blog/2021/02/mtk-log/" title="mtk-log" target="_blank">mtk-log</a>
                    </li>
                  
                    <li class='my-links-of-blogroll-li'>
                      <a href="/blog/2021/02/android-bugfree-three-lines/" title="BugFree三剑客异常、日志、工具" target="_blank">BugFree三剑客异常、日志、工具</a>
                    </li>
                  
                </ul>
              </div>
          
          <!--近期文章版块 end-->

          
              <!-- canvas粒子时钟 -->
              <!-- canvas粒子时钟 https://www.cnblogs.com/xiaohuochai/p/6368039.html
  https://www.html5tricks.com/html5-canvas-dance-time.html
 -->
<div id="">
  <canvas id="canvas" style="width:60%;">
</div>
<script async>
(function(){
  var WINDOW_WIDTH = 820;
  		var WINDOW_HEIGHT = 250;
  		var RADIUS = 7; //球半径
  		var NUMBER_GAP = 10; //数字之间的间隙
  		var u=0.65; //碰撞能量损耗系数
  		var context; //Canvas绘制上下文
  		var balls = []; //存储彩色的小球
  		const colors = ["#33B5E5","#0099CC","#AA66CC","#9933CC","#99CC00","#669900","#FFBB33","#FF8800","#FF4444","#CC0000"]; //彩色小球的颜色
  		var currentNums = []; //屏幕显示的8个字符
  		var digit =
                  [
                      [
                          [0,0,1,1,1,0,0],
                          [0,1,1,0,1,1,0],
                          [1,1,0,0,0,1,1],
                          [1,1,0,0,0,1,1],
                          [1,1,0,0,0,1,1],
                          [1,1,0,0,0,1,1],
                          [1,1,0,0,0,1,1],
                          [1,1,0,0,0,1,1],
                          [0,1,1,0,1,1,0],
                          [0,0,1,1,1,0,0]
                      ],//0
                      [
                          [0,0,0,1,1,0,0],
                          [0,1,1,1,1,0,0],
                          [0,0,0,1,1,0,0],
                          [0,0,0,1,1,0,0],
                          [0,0,0,1,1,0,0],
                          [0,0,0,1,1,0,0],
                          [0,0,0,1,1,0,0],
                          [0,0,0,1,1,0,0],
                          [0,0,0,1,1,0,0],
                          [1,1,1,1,1,1,1]
                      ],//1
                      [
                          [0,1,1,1,1,1,0],
                          [1,1,0,0,0,1,1],
                          [0,0,0,0,0,1,1],
                          [0,0,0,0,1,1,0],
                          [0,0,0,1,1,0,0],
                          [0,0,1,1,0,0,0],
                          [0,1,1,0,0,0,0],
                          [1,1,0,0,0,0,0],
                          [1,1,0,0,0,1,1],
                          [1,1,1,1,1,1,1]
                      ],//2
                      [
                          [1,1,1,1,1,1,1],
                          [0,0,0,0,0,1,1],
                          [0,0,0,0,1,1,0],
                          [0,0,0,1,1,0,0],
                          [0,0,1,1,1,0,0],
                          [0,0,0,0,1,1,0],
                          [0,0,0,0,0,1,1],
                          [0,0,0,0,0,1,1],
                          [1,1,0,0,0,1,1],
                          [0,1,1,1,1,1,0]
                      ],//3
                      [
                          [0,0,0,0,1,1,0],
                          [0,0,0,1,1,1,0],
                          [0,0,1,1,1,1,0],
                          [0,1,1,0,1,1,0],
                          [1,1,0,0,1,1,0],
                          [1,1,1,1,1,1,1],
                          [0,0,0,0,1,1,0],
                          [0,0,0,0,1,1,0],
                          [0,0,0,0,1,1,0],
                          [0,0,0,1,1,1,1]
                      ],//4
                      [
                          [1,1,1,1,1,1,1],
                          [1,1,0,0,0,0,0],
                          [1,1,0,0,0,0,0],
                          [1,1,1,1,1,1,0],
                          [0,0,0,0,0,1,1],
                          [0,0,0,0,0,1,1],
                          [0,0,0,0,0,1,1],
                          [0,0,0,0,0,1,1],
                          [1,1,0,0,0,1,1],
                          [0,1,1,1,1,1,0]
                      ],//5
                      [
                          [0,0,0,0,1,1,0],
                          [0,0,1,1,0,0,0],
                          [0,1,1,0,0,0,0],
                          [1,1,0,0,0,0,0],
                          [1,1,0,1,1,1,0],
                          [1,1,0,0,0,1,1],
                          [1,1,0,0,0,1,1],
                          [1,1,0,0,0,1,1],
                          [1,1,0,0,0,1,1],
                          [0,1,1,1,1,1,0]
                      ],//6
                      [
                          [1,1,1,1,1,1,1],
                          [1,1,0,0,0,1,1],
                          [0,0,0,0,1,1,0],
                          [0,0,0,0,1,1,0],
                          [0,0,0,1,1,0,0],
                          [0,0,0,1,1,0,0],
                          [0,0,1,1,0,0,0],
                          [0,0,1,1,0,0,0],
                          [0,0,1,1,0,0,0],
                          [0,0,1,1,0,0,0]
                      ],//7
                      [
                          [0,1,1,1,1,1,0],
                          [1,1,0,0,0,1,1],
                          [1,1,0,0,0,1,1],
                          [1,1,0,0,0,1,1],
                          [0,1,1,1,1,1,0],
                          [1,1,0,0,0,1,1],
                          [1,1,0,0,0,1,1],
                          [1,1,0,0,0,1,1],
                          [1,1,0,0,0,1,1],
                          [0,1,1,1,1,1,0]
                      ],//8
                      [
                          [0,1,1,1,1,1,0],
                          [1,1,0,0,0,1,1],
                          [1,1,0,0,0,1,1],
                          [1,1,0,0,0,1,1],
                          [0,1,1,1,0,1,1],
                          [0,0,0,0,0,1,1],
                          [0,0,0,0,0,1,1],
                          [0,0,0,0,1,1,0],
                          [0,0,0,1,1,0,0],
                          [0,1,1,0,0,0,0]
                      ],//9
                      [
                          [0,0,0,0],
                          [0,0,0,0],
                          [0,1,1,0],
                          [0,1,1,0],
                          [0,0,0,0],
                          [0,0,0,0],
                          [0,1,1,0],
                          [0,1,1,0],
                          [0,0,0,0],
                          [0,0,0,0]
                      ]//:
                  ];

  		function drawDatetime(cxt){
  			var nums = [];

  			context.fillStyle="#005eac"
  			var date = new Date();
  			var offsetX = 70, offsetY = 30;
  			var hours = date.getHours();
  			var num1 = Math.floor(hours/10);
  			var num2 = hours%10;
  			nums.push({num: num1});
  			nums.push({num: num2});
  			nums.push({num: 10}); //冒号
  			var minutes = date.getMinutes();
  			var num1 = Math.floor(minutes/10);
  			var num2 = minutes%10;
  			nums.push({num: num1});
  			nums.push({num: num2});
  			nums.push({num: 10}); //冒号
  			var seconds = date.getSeconds();
  			var num1 = Math.floor(seconds/10);
  			var num2 = seconds%10;
  			nums.push({num: num1});
  			nums.push({num: num2});

  			for(var x = 0;x<nums.length;x++){
  				nums[x].offsetX = offsetX;
  				offsetX = drawSingleNumber(offsetX,offsetY, nums[x].num,cxt);
  				//两个数字连一块，应该间隔一些距离
  				if(x<nums.length-1){
  					if((nums[x].num!=10) &&(nums[x+1].num!=10)){
  						offsetX+=NUMBER_GAP;
  					}
  				}
  			}

  			//说明这是初始化
  			if(currentNums.length ==0){
  				currentNums = nums;
  			}else{
  				//进行比较
  				for(var index = 0;index<currentNums.length;index++){
  					if(currentNums[index].num!=nums[index].num){
  						//不一样时，添加彩色小球
  						addBalls(nums[index]);
  						currentNums[index].num=nums[index].num;
  					}
  				}
  			}
  			renderBalls(cxt);
  			updateBalls();

  			return date;
  		}

  		function addBalls (item) {
  			var num = item.num;
  			var numMatrix = digit[num];
  			for(var y = 0;y<numMatrix.length;y++){
  				for(var x = 0;x<numMatrix[y].length;x++){
  					if(numMatrix[y][x]==1){
  						var ball={
  							offsetX:item.offsetX+RADIUS+RADIUS*2*x,
  							offsetY:30+RADIUS+RADIUS*2*y,
  							color:colors[Math.floor(Math.random()*colors.length)],
  							g:1.5+Math.random(),
  							vx:Math.pow(-1, Math.ceil(Math.random()*10))*4+Math.random(),
  							vy:-5
  						}
  						balls.push(ball);
  					}
  				}
  			}
  		}

  		function renderBalls(cxt){
  			for(var index = 0;index<balls.length;index++){
  				cxt.beginPath();
  				cxt.fillStyle=balls[index].color;
  				cxt.arc(balls[index].offsetX, balls[index].offsetY, RADIUS, 0, 2*Math.PI);
  				cxt.fill();
  			}
  		}

  		function updateBalls () {
  			var i =0;
  			for(var index = 0;index<balls.length;index++){
  				var ball = balls[index];
  				ball.offsetX += ball.vx;
  				ball.offsetY += ball.vy;
  				ball.vy+=ball.g;
  				if(ball.offsetY > (WINDOW_HEIGHT-RADIUS)){
  					ball.offsetY= WINDOW_HEIGHT-RADIUS;
  					ball.vy=-ball.vy*u;
  				}
  				if(ball.offsetX>RADIUS&&ball.offsetX<(WINDOW_WIDTH-RADIUS)){

  					balls[i]=balls[index];
  					i++;
  				}
  			}
  			//去除出边界的球
  			for(;i<balls.length;i++){
  				balls.pop();
  			}
  		}
  		function drawSingleNumber(offsetX, offsetY, num, cxt){
  			var numMatrix = digit[num];
  			for(var y = 0;y<numMatrix.length;y++){
  				for(var x = 0;x<numMatrix[y].length;x++){
  					if(numMatrix[y][x]==1){
  						cxt.beginPath();
  						cxt.arc(offsetX+RADIUS+RADIUS*2*x,offsetY+RADIUS+RADIUS*2*y,RADIUS,0,2*Math.PI);
  						cxt.fill();
  					}
  				}
  			}
  			cxt.beginPath();
  			offsetX += numMatrix[0].length*RADIUS*2;
  			return offsetX;
  		}

  		var canvas = document.getElementById("canvas");
  		canvas.width=WINDOW_WIDTH;
  		canvas.height=WINDOW_HEIGHT;
  		context = canvas.getContext("2d");

  		//记录当前绘制的时刻
  		var currentDate = new Date();

  		setInterval(function(){
  			//清空整个Canvas，重新绘制内容
  			context.clearRect(0, 0, context.canvas.width, context.canvas.height);
  			drawDatetime(context);
  		}, 50)
})();
</script>

          
          

        </div>
      </section>

      
      <!--noindex-->
        <section class="post-toc-wrap motion-element sidebar-panel sidebar-panel-active">
          <div class="post-toc">

            
              
            

            
              <div class="post-toc-content"><ol class="nav"><li class="nav-item nav-level-1"><a class="nav-link" href="#%E6%A1%86%E6%9E%B6%E6%8F%90%E4%BE%9B%E4%B8%80%E5%AE%9A%E8%83%BD%E5%8A%9B%E7%9A%84%E5%B0%8F%E6%AE%B5%E7%A8%8B%E5%BA%8F"><span class="nav-number">1.</span> <span class="nav-text"> 框架：提供一定能力的小段程序</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E4%B8%80%E6%A6%9C%E5%8D%95%E4%BB%8B%E7%BB%8D"><span class="nav-number">2.</span> <span class="nav-text">一.榜单介绍</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E4%BA%8C%E7%99%BE%E5%A4%A7%E6%A1%86%E6%9E%B6%E6%8E%92%E8%A1%8C%E6%A6%9C"><span class="nav-number">3.</span> <span class="nav-text">二.百大框架排行榜</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#1-retrofit"><span class="nav-number">3.1.</span> <span class="nav-text">1. Retrofit</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#2okhttp"><span class="nav-number">3.2.</span> <span class="nav-text">2.okhttp</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#3butter-knife"><span class="nav-number">3.3.</span> <span class="nav-text">3.Butter Knife</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#4mpandroidchart"><span class="nav-number">3.4.</span> <span class="nav-text">4.MPAndroidChart</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#5-glide"><span class="nav-number">3.5.</span> <span class="nav-text">5. glide</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#6leakcanary"><span class="nav-number">3.6.</span> <span class="nav-text">6.leakcanary</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#7android-universal-image-loader"><span class="nav-number">3.7.</span> <span class="nav-text">7.Android-Universal-Image-Loader</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#8eventbus"><span class="nav-number">3.8.</span> <span class="nav-text">8.EventBus</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#9zxing"><span class="nav-number">3.9.</span> <span class="nav-text">9.zxing</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#10picasso"><span class="nav-number">3.10.</span> <span class="nav-text">10.picasso</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#11lottie-android"><span class="nav-number">3.11.</span> <span class="nav-text">11.lottie-android</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#12fresco"><span class="nav-number">3.12.</span> <span class="nav-text">12.fresco</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#13rxandroid"><span class="nav-number">3.13.</span> <span class="nav-text">13.RxAndroid</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#14slidingmenu"><span class="nav-number">3.14.</span> <span class="nav-text">14.SlidingMenu</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#15photoview"><span class="nav-number">3.15.</span> <span class="nav-text">15.PhotoView</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#16material-dialogs"><span class="nav-number">3.16.</span> <span class="nav-text">16.material-dialogs</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#17android-async-http"><span class="nav-number">3.17.</span> <span class="nav-text">17.Android-async-http</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#18androidannotations"><span class="nav-number">3.18.</span> <span class="nav-text">18.androidannotations</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#19fastjson"><span class="nav-number">3.19.</span> <span class="nav-text">19.fastjson</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#20material-animations"><span class="nav-number">3.20.</span> <span class="nav-text">20.Material-Animations</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#21tinker"><span class="nav-number">3.21.</span> <span class="nav-text">21.tinker</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#22viewpagerindicator"><span class="nav-number">3.22.</span> <span class="nav-text">22.ViewPagerIndicator</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#23android-cleanarchitecture"><span class="nav-number">3.23.</span> <span class="nav-text">23.Android-CleanArchitecture</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#24android-pulltorefresh"><span class="nav-number">3.24.</span> <span class="nav-text">24..Android-PullToRefresh</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#25flexbox-layout"><span class="nav-number">3.25.</span> <span class="nav-text">25.flexbox-layout</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#26androidswipelayout"><span class="nav-number">3.26.</span> <span class="nav-text">26.AndroidSwipeLayout</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#27realm-java"><span class="nav-number">3.27.</span> <span class="nav-text">27.realm-java</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#28greendao"><span class="nav-number">3.28.</span> <span class="nav-text">28.greenDAO</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#29stetho"><span class="nav-number">3.29.</span> <span class="nav-text">29.stetho</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#30baserecyclerviewadapterhelper"><span class="nav-number">3.30.</span> <span class="nav-text">30.BaseRecyclerViewAdapterHelper</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#31androidviewanimations"><span class="nav-number">3.31.</span> <span class="nav-text">31.AndroidViewAnimations</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#32-materialdrawer"><span class="nav-number">3.32.</span> <span class="nav-text">32. MaterialDrawer</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#33android-observablescrollview"><span class="nav-number">3.33.</span> <span class="nav-text">33.Android-ObservableScrollView</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#34circleimageview"><span class="nav-number">3.34.</span> <span class="nav-text">34.CircleImageView</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#35logger"><span class="nav-number">3.35.</span> <span class="nav-text">35.logger</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#36agera"><span class="nav-number">3.36.</span> <span class="nav-text">36.agera</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#37bottombar"><span class="nav-number">3.37.</span> <span class="nav-text">37.BottomBar</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#38calligraphy"><span class="nav-number">3.38.</span> <span class="nav-text">38.Calligraphy</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#39androidslidinguppanel"><span class="nav-number">3.39.</span> <span class="nav-text">39.AndroidSlidingUpPanel</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#40appintro"><span class="nav-number">3.40.</span> <span class="nav-text">40.AppIntro</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#41recyclerview-animators"><span class="nav-number">3.41.</span> <span class="nav-text">41.recyclerview-animators</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#42dagger"><span class="nav-number">3.42.</span> <span class="nav-text">42.dagger</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#43android-bootstarp"><span class="nav-number">3.43.</span> <span class="nav-text">43.Android-Bootstarp</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#44rxbinding"><span class="nav-number">3.44.</span> <span class="nav-text">44.RxBinding</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#45listviewanimations"><span class="nav-number">3.45.</span> <span class="nav-text">45.ListViewAnimations</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#46uitimaterecyclerview"><span class="nav-number">3.46.</span> <span class="nav-text">46.UItimateRecyclerView</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#47ucrop"><span class="nav-number">3.47.</span> <span class="nav-text">47.uCrop</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#48rxjava-android-samples"><span class="nav-number">3.48.</span> <span class="nav-text">48.RxJava-Android-Samples</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#49androidautolayout"><span class="nav-number">3.49.</span> <span class="nav-text">49.AndroidAutoLayout</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#50effectiveandroidui"><span class="nav-number">3.50.</span> <span class="nav-text">50.EffectiveAndroidUI</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#51luban"><span class="nav-number">3.51.</span> <span class="nav-text">51.Luban</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#52droidplugin"><span class="nav-number">3.52.</span> <span class="nav-text">52.DroidPlugin</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#53-otto"><span class="nav-number">3.53.</span> <span class="nav-text">53. otto</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#54u2020"><span class="nav-number">3.54.</span> <span class="nav-text">54.u2020</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#55buck"><span class="nav-number">3.55.</span> <span class="nav-text">55.buck</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#56permissionsdispatcher"><span class="nav-number">3.56.</span> <span class="nav-text">56.PermissionsDispatcher</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#57android-gif-drawable"><span class="nav-number">3.57.</span> <span class="nav-text">57.android-gif-drawable</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#58apktool"><span class="nav-number">3.58.</span> <span class="nav-text">58.Apktool</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#59dynamic-load-apk"><span class="nav-number">3.59.</span> <span class="nav-text">59.dynamic-load-apk</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#60atlas"><span class="nav-number">3.60.</span> <span class="nav-text">60.atlas</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#61volley"><span class="nav-number">3.61.</span> <span class="nav-text">61.volley</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#62androidmvp"><span class="nav-number">3.62.</span> <span class="nav-text">62.androidmvp</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#63swipebacklayout"><span class="nav-number">3.63.</span> <span class="nav-text">63.SwipeBackLayout</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#64flycotablayout"><span class="nav-number">3.64.</span> <span class="nav-text">64.FlycoTabLayout</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#65android-testing"><span class="nav-number">3.65.</span> <span class="nav-text">65.android-testing</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#66filedownloader"><span class="nav-number">3.66.</span> <span class="nav-text">66.FileDownloader</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#67jiecaovideoplayer"><span class="nav-number">3.67.</span> <span class="nav-text">67.JieCaoVideoPlayer</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#68glide-transformations"><span class="nav-number">3.68.</span> <span class="nav-text">68.glide-transformations</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#69android-gpuimage"><span class="nav-number">3.69.</span> <span class="nav-text">69.android-gpuimage</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#70rxpermissions"><span class="nav-number">3.70.</span> <span class="nav-text">70.RxPermissions</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#71freeline"><span class="nav-number">3.71.</span> <span class="nav-text">71.freeline</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#72rxlifecycle"><span class="nav-number">3.72.</span> <span class="nav-text">72.RxLifecycle</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#73classyshark"><span class="nav-number">3.73.</span> <span class="nav-text">73.classyshark</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#74acra"><span class="nav-number">3.74.</span> <span class="nav-text">74.acra</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#75disklrucache"><span class="nav-number">3.75.</span> <span class="nav-text">75.DiskLruCache</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#76dexposed"><span class="nav-number">3.76.</span> <span class="nav-text">76.dexposed</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#77litho"><span class="nav-number">3.77.</span> <span class="nav-text">77.Litho</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#78mosby"><span class="nav-number">3.78.</span> <span class="nav-text">78.mosby</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#79andresguard"><span class="nav-number">3.79.</span> <span class="nav-text">79.AndResGuard</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#80statusbarutil"><span class="nav-number">3.80.</span> <span class="nav-text">80.StatusBarUtil</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#81robolectric"><span class="nav-number">3.81.</span> <span class="nav-text">81.robolectric</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#82fragmentation"><span class="nav-number">3.82.</span> <span class="nav-text">82.Fragmentation</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#83small"><span class="nav-number">3.83.</span> <span class="nav-text">83.Small</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#84jsbridge"><span class="nav-number">3.84.</span> <span class="nav-text">84.JsBridge</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#85richeditor-android"><span class="nav-number">3.85.</span> <span class="nav-text">85.richeditor-android</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#86transitions-everywhere"><span class="nav-number">3.86.</span> <span class="nav-text">86.Transitions-Everywhere</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#87android-viewbadger"><span class="nav-number">3.87.</span> <span class="nav-text">87.android-viewbadger</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#88androidwifiadb"><span class="nav-number">3.88.</span> <span class="nav-text">88.AndroidWiFiADB</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#89emojicon"><span class="nav-number">3.89.</span> <span class="nav-text">89.emojicon</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#90packer-ng-plugin"><span class="nav-number">3.90.</span> <span class="nav-text">90.packer-ng-plugin</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#91android-priority-jobqueue"><span class="nav-number">3.91.</span> <span class="nav-text">91.android-priority-jobqueue</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#92android-debug-database"><span class="nav-number">3.92.</span> <span class="nav-text">92.Android-Debug-Database</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#93conceal"><span class="nav-number">3.93.</span> <span class="nav-text">93.conceal</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#94arouter"><span class="nav-number">3.94.</span> <span class="nav-text">94.ARouter</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#95magicasakura"><span class="nav-number">3.95.</span> <span class="nav-text">95.MagicaSakura</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#96customactivityoncrash"><span class="nav-number">3.96.</span> <span class="nav-text">96.CustomActivityOnCrash</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#97xhsemoticonskeyboard"><span class="nav-number">3.97.</span> <span class="nav-text">97.XhsEmoticonsKeyboard</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#98android-debug-database"><span class="nav-number">3.98.</span> <span class="nav-text">98.Android Debug Database</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E4%B8%89%E5%AE%8C%E6%95%B4%E9%A1%B9%E7%9B%AE"><span class="nav-number">4.</span> <span class="nav-text">三.完整项目</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#1iosche"><span class="nav-number">4.1.</span> <span class="nav-text">1.iosche</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#2plaid"><span class="nav-number">4.2.</span> <span class="nav-text">2.Plaid</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#3pockethub"><span class="nav-number">4.3.</span> <span class="nav-text">3.PocketHub</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#4signal-android"><span class="nav-number">4.4.</span> <span class="nav-text">4.Signal Android</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#5android-universalmusicplayer"><span class="nav-number">4.5.</span> <span class="nav-text">5.android-UniversalMusicPlayer</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#6homemirror"><span class="nav-number">4.6.</span> <span class="nav-text">6.HomeMirror</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#7exoplayer"><span class="nav-number">4.7.</span> <span class="nav-text">7.ExoPlayer</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#8cheesesquare"><span class="nav-number">4.8.</span> <span class="nav-text">8.cheesesquare</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#9danmakuflamemaster"><span class="nav-number">4.9.</span> <span class="nav-text">9.DanmakuFlameMaster</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#10facebook-android-sdk"><span class="nav-number">4.10.</span> <span class="nav-text">10.facebook-android-sdk</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#11android-oss"><span class="nav-number">4.11.</span> <span class="nav-text">11.android-oss</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#12k-9"><span class="nav-number">4.12.</span> <span class="nav-text">12.k-9</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#13timber"><span class="nav-number">4.13.</span> <span class="nav-text">13.Timber</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#14remusic"><span class="nav-number">4.14.</span> <span class="nav-text">14.remusic</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#15douya"><span class="nav-number">4.15.</span> <span class="nav-text">15.Douya</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#16bookreader"><span class="nav-number">4.16.</span> <span class="nav-text">16.BookReader</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#17bilibili-android-client"><span class="nav-number">4.17.</span> <span class="nav-text">17.bilibili-android-client</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#18androidchromium"><span class="nav-number">4.18.</span> <span class="nav-text">18.AndroidChromium</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E5%9B%9B%E5%BC%80%E5%8F%91%E6%A1%86%E6%9E%B6"><span class="nav-number">5.</span> <span class="nav-text">四.开发框架：</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E6%8E%92%E5%90%8D%E6%97%A0%E5%85%88%E5%90%8E-%E5%8F%AA%E6%8C%89%E7%B1%BB%E5%9E%8B%E5%88%92%E5%88%86"><span class="nav-number">6.</span> <span class="nav-text">（排名无先后、只按类型划分）</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#1libgdxhttpsgithubcomlibgdxlibgdx"><span class="nav-number">6.1.</span> <span class="nav-text">1.libgdx(https:&#x2F;&#x2F;github.com&#x2F;libgdx&#x2F;libgdx)</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#2xutils"><span class="nav-number">6.2.</span> <span class="nav-text">2.xUtils</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#3android-common"><span class="nav-number">6.3.</span> <span class="nav-text">3.android-common</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#4vitamio"><span class="nav-number">6.4.</span> <span class="nav-text">4.Vitamio</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#5weex"><span class="nav-number">6.5.</span> <span class="nav-text">5.Weex</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#6cordova-androidhybrid-%E5%BC%80%E5%8F%91%E6%A1%86%E6%9E%B6-webapp%E5%BC%80%E5%8F%91%E6%A1%86%E6%9E%B6"><span class="nav-number">6.6.</span> <span class="nav-text">6.cordova-android（Hybrid 开发框架、WebApp开发框架）</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#7react-native"><span class="nav-number">6.7.</span> <span class="nav-text">7.react-native</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E4%BA%94%E5%85%B6%E4%BB%96"><span class="nav-number">7.</span> <span class="nav-text">五.其他：</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#1androidutilcode"><span class="nav-number">7.1.</span> <span class="nav-text">1.AndroidUtilCode</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#2kotiln"><span class="nav-number">7.2.</span> <span class="nav-text">2.kotiln</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E5%85%AD%E4%B9%A6%E7%B1%8D%E7%B1%BB%E9%A1%B9%E7%9B%AE"><span class="nav-number">8.</span> <span class="nav-text">六.书籍类项目</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E6%8E%92%E5%BA%8F%E6%97%A0%E5%85%88%E5%90%8E"><span class="nav-number">9.</span> <span class="nav-text">（排序无先后）</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#1android-developer%E4%B8%AD%E5%9B%BD%E5%AE%98%E7%BD%91%E5%9F%B9%E8%AE%AD%E8%AF%BE%E7%A8%8B"><span class="nav-number">9.1.</span> <span class="nav-text">1.Android developer中国官网培训课程</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#2android-architecture"><span class="nav-number">9.2.</span> <span class="nav-text">2.android-architecture</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#3andorid-open-project"><span class="nav-number">9.3.</span> <span class="nav-text">3.andorid-open-project</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#4awesome-android-ui"><span class="nav-number">9.4.</span> <span class="nav-text">4.awesome-android-ui</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E7%AC%94%E8%80%85%E5%AF%84%E8%AF%AD"><span class="nav-number">10.</span> <span class="nav-text">笔者寄语:</span></a></li></ol></div>
            

          </div>
        </section>
      <!--/noindex-->
      

      

      

      <!-- 标签云 -->
      <!--
      
      <script type="text/javascript" charset="utf-8" src="/js/tagcloud.js"></script>
      <script type="text/javascript" charset="utf-8" src="/js/tagcanvas.js"></script>
      <div class="widget-wrap">
      <h3 class="widget-title">Tag Cloud</h3>
      <div id="myCanvasContainer" class="widget tagcloud">
          <canvas width="250" height="250" id="resCanvas" style="width=100%">
              <ul class="tag-list" itemprop="keywords"><li class="tag-list-item"><a class="tag-list-link" href="/blog/tags/Android/" rel="tag">Android</a><span class="tag-list-count">13</span></li><li class="tag-list-item"><a class="tag-list-link" href="/blog/tags/AndroidUI%E4%BC%98%E5%8C%96/" rel="tag">AndroidUI优化</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/blog/tags/Android%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/" rel="tag">Android性能优化</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/blog/tags/BugFree/" rel="tag">BugFree</a><span class="tag-list-count">4</span></li><li class="tag-list-item"><a class="tag-list-link" href="/blog/tags/Communication/" rel="tag">Communication</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/blog/tags/Handler/" rel="tag">Handler</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/blog/tags/Performance/" rel="tag">Performance</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/blog/tags/%E4%B8%AA%E4%BA%BA%E6%95%99%E8%82%B2/" rel="tag">个人教育</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/blog/tags/%E5%AD%A6%E4%B9%A0%E6%96%B9%E6%B3%95/" rel="tag">学习方法</a><span class="tag-list-count">4</span></li><li class="tag-list-item"><a class="tag-list-link" href="/blog/tags/%E5%BC%80%E6%BA%90%E6%A1%86%E6%9E%B6/" rel="tag">开源框架</a><span class="tag-list-count">5</span></li><li class="tag-list-item"><a class="tag-list-link" href="/blog/tags/%E6%8A%80%E6%9C%AF%E9%80%89%E5%9E%8B/" rel="tag">技术选型</a><span class="tag-list-count">4</span></li><li class="tag-list-item"><a class="tag-list-link" href="/blog/tags/%E6%9D%82%E8%B0%88/" rel="tag">杂谈</a><span class="tag-list-count">1</span></li><li class="tag-list-item"><a class="tag-list-link" href="/blog/tags/%E7%A8%8B%E5%BA%8F%E4%BA%BA%E7%94%9F%EF%BC%8C%E6%9D%82%E8%B0%88/" rel="tag">程序人生，杂谈</a><span class="tag-list-count">3</span></li><li class="tag-list-item"><a class="tag-list-link" href="/blog/tags/%E7%AE%97%E6%B3%95/" rel="tag">算法</a><span class="tag-list-count">1</span></li></ul>
          </canvas>
      </div>
      </div>
      
      -->
      <!-- 标签云 -->

    </div>
  </aside>


        
      </div>
    </main>

    <footer id="footer" class="footer">
      <div class="footer-inner">
        <script async src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>
<div class="copyright">&copy; 2015 &mdash; <span itemprop="copyrightYear">2021</span>
  <span class="with-love">
       <i class="fa fa-heartbeat"></i>
  </span>
  <!--
    <span class="author" itemprop="copyrightHolder"> &nbsp;叶金诚</span>
  -->
  
    <span class="post-meta-divider">|</span>
    <span class="post-meta-item-icon">
      <i class="fa fa-area-chart"></i>
    </span>
    
      <span class="post-meta-item-text">Site words total count&#58;</span>
    
    <span title="Site words total count">111k</span>
  
</div>














  <script src='https://unpkg.com/mermaid@7.1.2/dist/mermaid.min.js'></script>
  <script>
    if (window.mermaid) {
      mermaid.initialize("");
    }
  </script>



        
<div class="busuanzi-count">
  <!--
  <script async src="https://dn-lbstatics.qbox.me/busuanzi/2.3/busuanzi.pure.mini.js"></script>
  -->
  <script async src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>

   

  
  
    
      <span class="site-uv">
        
        我的第 <span class="busuanzi-value" id="busuanzi_value_site_uv"></span> 位朋友，
      </span>
    

    
      <span class="site-pv">
        历经 <span class="busuanzi-value" id="busuanzi_value_site_pv"></span> 次回眸才与你相遇
        <span class="busuanzi-value" id="busuanzi_value_site_pv"></span>
      </span>
    
  

</div>








        
      </div>
    </footer>

    
    

    

  </div>

  

<script type="text/javascript">
  if (Object.prototype.toString.call(window.Promise) !== '[object Function]') {
    window.Promise = null;
  }
</script>









  










  



  
  
    <script type="text/javascript" src="//cdn.jsdelivr.net/npm/jquery@2.1.3/dist/jquery.min.js"></script>
  

  
  
    <script type="text/javascript" src="//cdn.jsdelivr.net/fastclick/1.0.6/fastclick.min.js"></script>
  

  
  
    <script type="text/javascript" src="//cdn.jsdelivr.net/jquery.lazyload/1.9.3/jquery.lazyload.min.js"></script>
  

  
  
    <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/velocity-animate@1.2.1/velocity.min.js"></script>
  

  
  
    <script type="text/javascript" src="//cdn.jsdelivr.net/npm/velocity-animate@1.2.1/velocity.ui.min.js"></script>
  

  
  
    <script type="text/javascript" src="/blog/lib/fancybox/source/jquery.fancybox.pack.js?v=2.1.5"></script>
  

  
  
    <script id="ribbon" type="text/javascript" size="60" alpha="0.1"  zIndex="-1" src="/blog/lib/canvas-ribbon/canvas-ribbon.js"></script>
  


  


  <script type="text/javascript" src="/blog/js/src/utils.js?v=5.1.4"></script>

  <script type="text/javascript" src="/blog/js/src/motion.js?v=5.1.4"></script>



  
  


  <script type="text/javascript" src="/blog/js/src/affix.js?v=5.1.4"></script>

  <script type="text/javascript" src="/blog/js/src/schemes/pisces.js?v=5.1.4"></script>



  
  <script type="text/javascript" src="/blog/js/src/scrollspy.js?v=5.1.4"></script>
<script type="text/javascript" src="/blog/js/src/post-details.js?v=5.1.4"></script>



  


  <script type="text/javascript" src="/blog/js/src/bootstrap.js?v=5.1.4"></script>



  


  




	





  





  
    <script type="text/javascript">
      (function(d, s) {
        var j, e = d.getElementsByTagName(s)[0];
        if (typeof LivereTower === 'function') { return; }
        j = d.createElement(s);
        j.src = 'https://cdn-city.livere.com/js/embed.dist.js';
        j.async = true;
        e.parentNode.insertBefore(j, e);
      })(document, 'script');
    </script>
  















  

  <script type="text/javascript">
    // Popup Window;
    var isfetched = false;
    var isXml = true;
    // Search DB path;
    var search_path = "search.xml";
    if (search_path.length === 0) {
      search_path = "search.xml";
    } else if (/json$/i.test(search_path)) {
      isXml = false;
    }
    var path = "/blog/" + search_path;
    // monitor main search box;

    var onPopupClose = function (e) {
      $('.popup').hide();
      $('#local-search-input').val('');
      $('.search-result-list').remove();
      $('#no-result').remove();
      $(".local-search-pop-overlay").remove();
      $('body').css('overflow', '');
    }

    function proceedsearch() {
      $("body")
        .append('<div class="search-popup-overlay local-search-pop-overlay"></div>')
        .css('overflow', 'hidden');
      $('.search-popup-overlay').click(onPopupClose);
      $('.popup').toggle();
      var $localSearchInput = $('#local-search-input');
      $localSearchInput.attr("autocapitalize", "none");
      $localSearchInput.attr("autocorrect", "off");
      $localSearchInput.focus();
    }

    // search function;
    var searchFunc = function(path, search_id, content_id) {
      'use strict';

      // start loading animation
      $("body")
        .append('<div class="search-popup-overlay local-search-pop-overlay">' +
          '<div id="search-loading-icon">' +
          '<i class="fa fa-spinner fa-pulse fa-5x fa-fw"></i>' +
          '</div>' +
          '</div>')
        .css('overflow', 'hidden');
      $("#search-loading-icon").css('margin', '20% auto 0 auto').css('text-align', 'center');

      $.ajax({
        url: path,
        dataType: isXml ? "xml" : "json",
        async: true,
        success: function(res) {
          // get the contents from search data
          isfetched = true;
          $('.popup').detach().appendTo('.header-inner');
          var datas = isXml ? $("entry", res).map(function() {
            return {
              title: $("title", this).text(),
              content: $("content",this).text(),
              url: $("url" , this).text()
            };
          }).get() : res;
          var input = document.getElementById(search_id);
          var resultContent = document.getElementById(content_id);
          var inputEventFunction = function() {
            var searchText = input.value.trim().toLowerCase();
            var keywords = searchText.split(/[\s\-]+/);
            if (keywords.length > 1) {
              keywords.push(searchText);
            }
            var resultItems = [];
            if (searchText.length > 0) {
              // perform local searching
              datas.forEach(function(data) {
                var isMatch = false;
                var hitCount = 0;
                var searchTextCount = 0;
                var title = data.title.trim();
                var titleInLowerCase = title.toLowerCase();
                var content = data.content.trim().replace(/<[^>]+>/g,"");
                var contentInLowerCase = content.toLowerCase();
                var articleUrl = decodeURIComponent(data.url);
                var indexOfTitle = [];
                var indexOfContent = [];
                // only match articles with not empty titles
                if(title != '') {
                  keywords.forEach(function(keyword) {
                    function getIndexByWord(word, text, caseSensitive) {
                      var wordLen = word.length;
                      if (wordLen === 0) {
                        return [];
                      }
                      var startPosition = 0, position = [], index = [];
                      if (!caseSensitive) {
                        text = text.toLowerCase();
                        word = word.toLowerCase();
                      }
                      while ((position = text.indexOf(word, startPosition)) > -1) {
                        index.push({position: position, word: word});
                        startPosition = position + wordLen;
                      }
                      return index;
                    }

                    indexOfTitle = indexOfTitle.concat(getIndexByWord(keyword, titleInLowerCase, false));
                    indexOfContent = indexOfContent.concat(getIndexByWord(keyword, contentInLowerCase, false));
                  });
                  if (indexOfTitle.length > 0 || indexOfContent.length > 0) {
                    isMatch = true;
                    hitCount = indexOfTitle.length + indexOfContent.length;
                  }
                }

                // show search results

                if (isMatch) {
                  // sort index by position of keyword

                  [indexOfTitle, indexOfContent].forEach(function (index) {
                    index.sort(function (itemLeft, itemRight) {
                      if (itemRight.position !== itemLeft.position) {
                        return itemRight.position - itemLeft.position;
                      } else {
                        return itemLeft.word.length - itemRight.word.length;
                      }
                    });
                  });

                  // merge hits into slices

                  function mergeIntoSlice(text, start, end, index) {
                    var item = index[index.length - 1];
                    var position = item.position;
                    var word = item.word;
                    var hits = [];
                    var searchTextCountInSlice = 0;
                    while (position + word.length <= end && index.length != 0) {
                      if (word === searchText) {
                        searchTextCountInSlice++;
                      }
                      hits.push({position: position, length: word.length});
                      var wordEnd = position + word.length;

                      // move to next position of hit

                      index.pop();
                      while (index.length != 0) {
                        item = index[index.length - 1];
                        position = item.position;
                        word = item.word;
                        if (wordEnd > position) {
                          index.pop();
                        } else {
                          break;
                        }
                      }
                    }
                    searchTextCount += searchTextCountInSlice;
                    return {
                      hits: hits,
                      start: start,
                      end: end,
                      searchTextCount: searchTextCountInSlice
                    };
                  }

                  var slicesOfTitle = [];
                  if (indexOfTitle.length != 0) {
                    slicesOfTitle.push(mergeIntoSlice(title, 0, title.length, indexOfTitle));
                  }

                  var slicesOfContent = [];
                  while (indexOfContent.length != 0) {
                    var item = indexOfContent[indexOfContent.length - 1];
                    var position = item.position;
                    var word = item.word;
                    // cut out 100 characters
                    var start = position - 20;
                    var end = position + 80;
                    if(start < 0){
                      start = 0;
                    }
                    if (end < position + word.length) {
                      end = position + word.length;
                    }
                    if(end > content.length){
                      end = content.length;
                    }
                    slicesOfContent.push(mergeIntoSlice(content, start, end, indexOfContent));
                  }

                  // sort slices in content by search text's count and hits' count

                  slicesOfContent.sort(function (sliceLeft, sliceRight) {
                    if (sliceLeft.searchTextCount !== sliceRight.searchTextCount) {
                      return sliceRight.searchTextCount - sliceLeft.searchTextCount;
                    } else if (sliceLeft.hits.length !== sliceRight.hits.length) {
                      return sliceRight.hits.length - sliceLeft.hits.length;
                    } else {
                      return sliceLeft.start - sliceRight.start;
                    }
                  });

                  // select top N slices in content

                  var upperBound = parseInt('1');
                  if (upperBound >= 0) {
                    slicesOfContent = slicesOfContent.slice(0, upperBound);
                  }

                  // highlight title and content

                  function highlightKeyword(text, slice) {
                    var result = '';
                    var prevEnd = slice.start;
                    slice.hits.forEach(function (hit) {
                      result += text.substring(prevEnd, hit.position);
                      var end = hit.position + hit.length;
                      result += '<b class="search-keyword">' + text.substring(hit.position, end) + '</b>';
                      prevEnd = end;
                    });
                    result += text.substring(prevEnd, slice.end);
                    return result;
                  }

                  var resultItem = '';

                  if (slicesOfTitle.length != 0) {
                    resultItem += "<li><a href='" + articleUrl + "' class='search-result-title'>" + highlightKeyword(title, slicesOfTitle[0]) + "</a>";
                  } else {
                    resultItem += "<li><a href='" + articleUrl + "' class='search-result-title'>" + title + "</a>";
                  }

                  slicesOfContent.forEach(function (slice) {
                    resultItem += "<a href='" + articleUrl + "'>" +
                      "<p class=\"search-result\">" + highlightKeyword(content, slice) +
                      "...</p>" + "</a>";
                  });

                  resultItem += "</li>";
                  resultItems.push({
                    item: resultItem,
                    searchTextCount: searchTextCount,
                    hitCount: hitCount,
                    id: resultItems.length
                  });
                }
              })
            };
            if (keywords.length === 1 && keywords[0] === "") {
              resultContent.innerHTML = '<div id="no-result"><i class="fa fa-search fa-5x" /></div>'
            } else if (resultItems.length === 0) {
              resultContent.innerHTML = '<div id="no-result"><i class="fa fa-frown-o fa-5x" /></div>'
            } else {
              resultItems.sort(function (resultLeft, resultRight) {
                if (resultLeft.searchTextCount !== resultRight.searchTextCount) {
                  return resultRight.searchTextCount - resultLeft.searchTextCount;
                } else if (resultLeft.hitCount !== resultRight.hitCount) {
                  return resultRight.hitCount - resultLeft.hitCount;
                } else {
                  return resultRight.id - resultLeft.id;
                }
              });
              var searchResultList = '<ul class=\"search-result-list\">';
              resultItems.forEach(function (result) {
                searchResultList += result.item;
              })
              searchResultList += "</ul>";
              resultContent.innerHTML = searchResultList;
            }
          }

          if ('auto' === 'auto') {
            input.addEventListener('input', inputEventFunction);
          } else {
            $('.search-icon').click(inputEventFunction);
            input.addEventListener('keypress', function (event) {
              if (event.keyCode === 13) {
                inputEventFunction();
              }
            });
          }

          // remove loading animation
          $(".local-search-pop-overlay").remove();
          $('body').css('overflow', '');

          proceedsearch();
        }
      });
    }

    // handle and trigger popup window;
    $('.popup-trigger').click(function(e) {
      e.stopPropagation();
      if (isfetched === false) {
        searchFunc(path, 'local-search-input', 'local-search-result');
      } else {
        proceedsearch();
      };
    });

    $('.popup-btn-close').click(onPopupClose);
    $('.popup').click(function(e){
      e.stopPropagation();
    });
    $(document).on('keyup', function (event) {
      var shouldDismissSearchPopup = event.which === 27 &&
        $('.search-popup').is(':visible');
      if (shouldDismissSearchPopup) {
        onPopupClose();
      }
    });
  </script>





    <script>  function addCount(Counter){var $visitors=$('.leancloud_visitors');var url=$visitors.attr('id').trim();var title=$visitors.attr('data-flag-title').trim();Counter('get','/classes/Counter',{where:JSON.stringify({url})}).done(function({results}){if(results.length>0){var counter=results[0]; var $element=$(document.getElementById(url));$element.find('.leancloud-visitors-count').text(counter.time+1);Counter('put','/classes/Counter/'+counter.objectId,JSON.stringify({time:{'__op':'Increment','amount':1}})) .fail(function({responseJSON}){console.log('Failed to save Visitor num, with error message: '+responseJSON.error);})}else{ Counter('post','/classes/Counter',JSON.stringify({title:title,url:url,time:1})).done(function(){var $element=$(document.getElementById(url));$element.find('.leancloud-visitors-count').text(1);}).fail(function(){console.log('Failed to create');});}}).fail(function({responseJSON}){console.log('LeanCloud Counter Error: '+responseJSON.code+' '+responseJSON.error);});}$(function(){$.get('https://app-router.leancloud.cn/2/route?appId='+'MFn6psRe8xtnq9sq6lv9MJks-gzGzoHsz').done(function({api_server}){var Counter=function(method,url,data){return $.ajax({method:method,url:'https://'+api_server+'/1.1'+url,headers:{'X-LC-Id':'MFn6psRe8xtnq9sq6lv9MJks-gzGzoHsz','X-LC-Key':'pi8Pa2aH3XpcaovMyqIXVuOP','Content-Type':'application/json',},data:data});};  const localhost=/http:\/\/(localhost|127.0.0.1|0.0.0.0)/;if(localhost.test(document.URL))return;addCount(Counter);});});</script>

  

  
<script>
(function(){
    var bp = document.createElement('script');
    var curProtocol = window.location.protocol.split(':')[0];
    if (curProtocol === 'https') {
        bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';        
    }
    else {
        bp.src = 'http://push.zhanzhang.baidu.com/push.js';
    }
    var s = document.getElementsByTagName("script")[0];
    s.parentNode.insertBefore(bp, s);
})();
</script>


  
  
  
  <link rel="stylesheet" href="/blog/lib/needsharebutton/needsharebutton.css">

  
  
  <script src="/blog/lib/needsharebutton/needsharebutton.js"></script>

  <script>
    
      pbOptions = {};
      
          pbOptions.iconStyle = "default";
      
          pbOptions.boxForm = "horizontal";
      
          pbOptions.position = "bottomCenter";
      
          pbOptions.networks = "Weibo,Wechat,Douban,QQZone,Twitter,Facebook";
      
      new needShareButton('#needsharebutton-postbottom', pbOptions);
    
    
  </script>

  

  
  


  

  


  <!-- Tidio 在线联系功能、鼠标点击特效、页面反馈...-->
  <script type="text/javascript" src="/js/src/clipboard.min.js"></script>
<script type="text/javascript" src="/js/src/clipboard-use.js"></script>



  
    <canvas class="fireworks" style="position: fixed;left: 0;top: 0;z-index: 1; pointer-events: none;" ></canvas>
    <script async src="//cdn.bootcss.com/animejs/2.2.0/anime.min.js"></script>
    <script async src="/js/cursor/explosion.min.js"></script>
  










  <script src="/js/src/activate-power-mode.min.js"></script>
  <script>
    POWERMODE.colorful = true;
    POWERMODE.shake = false;
    document.body.addEventListener('input', POWERMODE);
  </script>






  <script async language="javascript">

    var div = document.createElement("div");
    //插入到自定义的theme-info或者copyright之后
    var copyright = document.querySelector(".theme-info2") || document.querySelector(".copyright");

    function show_run_time(){
        window.setTimeout("show_run_time()", 1000);
      // BirthDay=new Date("08/07/2019 20:00:00");
        BirthDay=new Date("08/07/2016 20:00:00");
        today=new Date();
        timeold=(today.getTime()-BirthDay.getTime());
        sectimeold=timeold/1000
        secondsold=Math.floor(sectimeold);
        msPerDay=24*60*60*1000
        e_daysold=timeold/msPerDay
        daysold=Math.floor(e_daysold);
        e_hrsold=(e_daysold-daysold)*24;
        hrsold=setzero(Math.floor(e_hrsold));
        e_minsold=(e_hrsold-hrsold)*60;
        minsold=setzero(Math.floor((e_hrsold-hrsold)*60));
        seconds=setzero(Math.floor((e_minsold-minsold)*60));

        // 使用zh-Hans.yml的文字替换
        div.innerHTML = "我已在此等候你 " + "<span style='color: #1890ff'> " + daysold + " </span> 天 <span style='color: #1890ff'>" + hrsold + " </span>时 <span style='color: #1890ff'>" + minsold + " </span>分 <span style='color: #1890ff'>" + seconds + " </span>秒 ";

        document.querySelector(".footer-inner").insertBefore(div, copyright.nextSibling);

    }
    function setzero(i){
        if (i<10)
        {i="0" + i};
        return i;
    }

    show_run_time();

  </script>




<!-- 旋转魔方 -->

   
      
<style>
  /*最外层容器样式*/
  .wrap {
    width: 0px;
    height: 0px;
    /*margin: 80px;*/
    /*position: relative;*/
	     /*显示位置*/
    position: fixed;
    bottom: 120px;
    right: 240px;
    z-index: 999;
  }

  /*包裹所有容器样式*/
  .cube {
    width: 0px;
    height: 0px;
    margin: 0 auto;
    -webkit-transform-style: preserve-3d;
    transform-style: preserve-3d;
    transform: rotateX(-30deg) rotateY(-80deg);
    animation: rotate linear 10s infinite;
  }

  @-webkit-keyframes rotate {
    from {
      transform: rotateX(0deg) rotateY(0deg);
    }
    to {
      transform: rotateX(360deg) rotateY(360deg);
    }
  }

  .cube div {
    position: absolute;
    width: 50px;
    height: 50px;
    opacity: 0.8;
    transition: all .4s;
  }

  /*定义所有图片样式*/
  .pic {
    width: 50px;
    height: 50px;
  }

  .cube .out_front {
    transform: rotateY(0deg) translateZ(25px);
  }

  .cube .out_back {
    transform: translateZ(-25px) rotateY(180deg);
  }

  .cube .out_left {
    transform: rotateY(-90deg) translateZ(25px);
  }

  .cube .out_right {
    transform: rotateY(90deg) translateZ(25px);
  }

  .cube .out_top {
    transform: rotateX(90deg) translateZ(25px);
  }

  .cube .out_bottom {
    transform: rotateX(-90deg) translateZ(25px);
  }

  /*定义小正方体样式*/
  .cube span {
    display: block;
    width: 25px;
    height: 25px;
    position: absolute;
    top: 12px;
    left: 12px;
  }

  .cube .in_pic {
    width: 25px;
    height:25px;
  }

  .cube .in_front {
    transform: rotateY(0deg) translateZ(12px);
  }

  .cube .in_back {
    transform: translateZ(-12px) rotateY(180deg);
  }

  .cube .in_left {
    transform: rotateY(-90deg) translateZ(12px);
  }

  .cube .in_right {
    transform: rotateY(90deg) translateZ(12px);
  }

  .cube .in_top {
    transform: rotateX(90deg) translateZ(12px);
  }

  .cube .in_bottom {
    transform: rotateX(-90deg) translateZ(12px);
  }

  /*鼠标移入后样式*/
  .cube:hover .out_front {
    transform: rotateY(0deg) translateZ(50px);
  }

  .cube:hover .out_back {
    transform: translateZ(-50px) rotateY(180deg);
  }

  .cube:hover .out_left {
    transform: rotateY(-90deg) translateZ(50px);
  }

  .cube:hover .out_right {
    transform: rotateY(90deg) translateZ(50px);
  }

  .cube:hover .out_top {
    transform: rotateX(90deg) translateZ(50px);
  }

  .cube:hover .out_bottom {
    transform: rotateX(-90deg) translateZ(50px);
  }
</style>

<div class="wrap">

		<!--包裹所有元素的容器-->
		<div class="cube">
			<!--前面图片 -->
			<div class="out_front">
			  <a onclick="back2top()">
				  <img src="http://cdn.yangchaofan.cn/BlogGifRes/20210307/lAq9mKTioPeO.png" class="pic" />
				</a>
			</div>
			<!--后面图片 -->
			<div class="out_back">
				<a onclick="back2top()">
          <img src="http://cdn.yangchaofan.cn/BlogGifRes/20210307/lAq9mKTioPeO.png" class="pic" />
        </a>
			</div>
			<!--左面图片 -->
			<div class="out_left">
        <a onclick="back2top()">
				  <img src="http://cdn.yangchaofan.cn/BlogGifRes/20210307/lAq9mKTioPeO.png" class="pic" />
				</a>
			</div>
			<!--右面图片 -->
			<div class="out_right">
				<a onclick="back2top()">
          <img src="http://cdn.yangchaofan.cn/BlogGifRes/20210307/lAq9mKTioPeO.png" class="pic" />
        </a>
			</div>
			<!--上面图片 -->
			<div class="out_top">
				<a onclick="back2top()">
          <img src="http://cdn.yangchaofan.cn/BlogGifRes/20210307/lAq9mKTioPeO.png" class="pic" />
        </a>
			</div>
			<!--下面图片 -->
			<div class="out_bottom">
				<a onclick="back2top()">
          <img src="http://cdn.yangchaofan.cn/BlogGifRes/20210307/lAq9mKTioPeO.png" class="pic" />
        </a>
			</div>

			<!--小正方体 -->
			<span class="in_front">
				<img src="https://s2.ax1x.com/2019/10/14/KptCPf.th.jpg" class="in_pic" />
			</span>
			<span class="in_back">
			     <img src="https://s2.ax1x.com/2019/10/14/KptCPf.th.jpg" class="in_pic" />
			</span>
			<span class="in_left">
				<img src="https://s2.ax1x.com/2019/10/14/KptCPf.th.jpg" class="in_pic" />
			</span>
			<span class="in_right">
				<img src="https://s2.ax1x.com/2019/10/14/KptCPf.th.jpg" class="in_pic" />
			</span>
			<span class="in_top">
				<img src="https://s2.ax1x.com/2019/10/14/KptCPf.th.jpg" class="in_pic" />
			</span>
			<span class="in_bottom">
				<img src="https://s2.ax1x.com/2019/10/14/KptCPf.th.jpg" class="in_pic" />
			</span>
		</div>

</div>

<script>
  function back2top(){
    $('html, body').animate({scrollTop: 0}, 500);
  }
</script>

   


<!-- Console 输出第三方个性化字体 -->

  <script async type="text/javascript" src="/blog/figlet/fetch.min.js"></script>
  <script type="text/javascript" src="/blog/figlet/figlet.js"></script>
  <script type="text/javascript">

      figlet.defaults({fontPath: "/figlet/fonts"});
      figlet("Welcome To Leaface", "Big Money-ne", function(err, text) {
          if (err) {
              console.log("something went wrong...");
              console.dir(err);
              return;
          }
          console.log(text);
      });
  </script>


  <!-- Console 输出自定义字体 -->
  
    <script async type="text/javascript">
        var text = "Welcome To Leaface";
        var date = '2021-06-10';
        console.log("%c " + text, "font-size:100px;color:white;border-radius:20px;height:200px; background:-webkit-linear-gradient(yellow,orange,red,green,blue,purple);text-shadow: 0 1px 0 #ccc,0 2px 0 #c9c9c9,0 3px 0 #bbb,0 4px 0 #b9b9b9,0 5px 0 #aaa,0 6px 1px rgba(0,0,0,.1),0 0 5px rgba(0,0,0,.1),0 1px 3px rgba(0,0,0,.3),0 3px 5px rgba(0,0,0,.2),0 5px 10px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.2),0 20px 20px rgba(0,0,0,.15);");
        console.info('\n' + ' %c Leafae Site %c https://www.liaofuzhan.com ' + '\n', 'color: #fadfa3; background: #030307; padding:5px 0;', 'background: #fadfa3; padding:5px 0;');
        console.info('\n' + ' %c Leafae QQ %c 793458585 ' + '\n', 'color: #fadfa3; background: #030307; padding:5px 0;', 'background: #fadfa3; padding:5px 0;');
        console.info('\n' + ' %c Leafae Wechat %c leaface ' + '\n', 'color: #fadfa3; background: #030307; padding:5px 0;', 'background: #fadfa3; padding:5px 0;');
       // console.log("%c Time: " + date, "font-size:100px;white:"+fcolor+";border-radius:20px;height:200px; background:-webkit-linear-gradient(yellow,orange,red,green,blue,purple);text-shadow: 0 1px 0 #ccc,0 2px 0 #c9c9c9,0 3px 0 #bbb,0 4px 0 #b9b9b9,0 5px 0 #aaa,0 6px 1px rgba(0,0,0,.1),0 0 5px rgba(0,0,0,.1),0 1px 3px rgba(0,0,0,.3),0 3px 5px rgba(0,0,0,.2),0 5px 10px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.2),0 20px 20px rgba(0,0,0,.15);  background-image: linear-gradient(to right, orangered, orange, gold, lightgreen, cyan, dodgerblue, mediumpurple, hotpink, orangered);");
       // console.log("%c .", "padding:300px 600px;line-height:10px;background:url(https://s2.ax1x.com/2019/10/17/KkoAJJ.md.png) no-repeat;");
    </script>
  


  <!-- 看板娘 -->
  
      <script async src="/live2d-widget/autoload.js"></script>
  
	<!-- leafacePlayer -->
	
	<script id="lfz" src="http://player.liaofuzhan.com/player/player.js" key=1368557075310858241></script>
	

  

  

  <!-- 代码块复制功能 -->
  <script async type="text/javascript" src="/js/src/clipboard.min.js"></script>
  <script async type="text/javascript" src="/js/src/clipboard-use.js"></script>
 

  <!--share.js-->
  <link async rel="stylesheet" href="/sharejs/css/share.min.css">
  <script async src="/sharejs/js/social-share.min.js"></script>

  <!-- 模仿知乎卡片样式链接、崩溃欺骗特效 -->
  <script async type="text/javascript" src="/js/src/linkcard.js"></script>

  <!--崩溃欺骗 放在js文件最后-->
  <!--
  <script type="text/javascript" src="/js/src/crash_cheat.js"></script>
  -->

 

<script src="/blog/live2dw/lib/L2Dwidget.min.js?094cbace49a39548bed64abff5988b05"></script><script>L2Dwidget.init({"log":false,"pluginJsPath":"lib/","pluginModelPath":"assets/","pluginRootPath":"live2dw/","tagMode":false});</script></body>
</html>
